在 Sun 技术社区看到这么一句话:The Java Tutorial, Fourth Edition: The Chinese version is scheduled to be published in 2007.09. 拭目以待。
8/22/2007
弱引用早有耳闻,但从来没去认真看过。前天改编 William Chen 的下雪动画时,发现他使用了弱引用,于是趁机把 Java 的对象引用类型看了个究竟。
除了通常意义下的强引用,软件包 java.lang.ref 还定义了其他三种平时不太用到的引用:软引用、弱引用和虚引用,但 API 文档的解释比较含糊。我在网上搜到了一些资料,简单归纳一下。
强引用。当一个对象具有强引用时,Java 虚拟机宁愿抛出 OutOfMemeryError,也绝不让垃圾回收器回收它。
软引用。当一个对象只具有软引用时,垃圾回收器只在内存不足的时候才回收它。
弱引用。当一个对象只具有弱引用时,一旦被垃圾回收器发现就会被回收。因为垃圾回收器是一个优先级很低的线程,所以弱引用对象也不一定会马上就会被回收。
虚引用。虚引用和对象的生命周期无关。虚引用必须和引用队列联合使用,对象将被回收前,其虚引用将被加入到引用队列。虚引用只是用来监视对象的回收。
从以上是否能看出,一个对象不能同时具有软引用和弱引用?
I've heard of weak reference for a long time, but have never study it seriously yet. The day before yesterday, when I was modifying William Chen's snowing animation, I found weak reference was utilized, and took the chance to see the details of Java's reference type.
Except the strong reference of common purpose, package java.lang.ref defines three other references which are less often used, these are soft reference, weak reference and phantom reference, but they have obscure explanations in the API documention. I searched online and got some stuffs and here are my summaries.
Strong Reference. When an object holds strong references, Java Virtue Machine would rather throw an OutOfMemeryError than make garbage collector (GC) collect it.
Soft Reference. When an object holds only soft references, GC collects it only if there is not enough memory.
Weak Reference. When an object holds only weak references, GC collects it as soon as finds it. GC is a thread of very low priority, so a weak reference object may not be collected immediately.
Phantom Reference. Phantom reference has nothing to do with the life cycle of an object. Phantom reference must be used together with reference queue, and the object's phantom reference will be added into that reference queue right before collected. Phantom reference is only used to monitor object collecting.
From above shall we say that an object can't have a soft reference and a weak reference at the same time?
8/8/2007
| 版本 | 代号 | 含义 | 发布日期 |
| 1.1.4 | Sparkler | 宝石 | 1997-09-12 |
| 1.1.5 | Pumpkin | 南瓜 | 1997-12-13 |
| 1.1.6 | Abigail | 阿比盖尔(女子名) | 1998-04-24 |
| 1.1.7 | Brutus | 布鲁塔斯(古罗马政治家) | 1998-09-28 |
| 1.1.8 | Chelsea | 彻西(伦敦的文化区) | 1999-04-08 |
| 1.2.0 | Playground | 运动场 | 1998-12-04 |
| 1.2.1 | - | - | 1999-03-30 |
| 1.2.2 | Cricket | 蟋蟀 | 1999-07-08 |
| 1.3.0 | Kestrel | 茶隼 | 2000-05-08 |
| 1.3.1 | Ladybird | 瓢虫 | 2001-05-17 |
| 1.4.0 | Merlin | 灰背隼 | 2002-02-13 |
| 1.4.1 | Grasshopper | 蚱蜢 | 2002-09-16 |
| 1.4.2 | Mantis | 螳螂 | 2003-06-26 |
| 1.5.0/5.0 | Tiger | 老虎 | 2004-09-29 |
| 1.5.1/5.1 | Dragonfly | 蜻蜓 | 没有发布 |
| 1.6.0/6.0 | Mustang | 野马 | 2006-12-12 |
| 1.7.0/7.0 | Dolphin | 海豚 | 尚未发布 |
有趣的还有 Java 归档文件的扩展名:企业程序是耳朵 ear(Enterprise Archive);Web 程序是战争 war(Web Archive)……
8/5/2007
我们公司的总工经常说:“你看这个谁,我让他解决一个小问题。虽然他弄了半年多也没搞清楚,但这个问题其实早就有解决办法了,把那个谁叫来一下子就能搞定!但是我就要让这个谁自己做,自己做出来印象才深刻,才会真正学到东西。”我不反对独立思考,可是都半年了!就为了纠缠那个本来“一下子就能搞定”的“小问题”?公司的决策者怎么想我不清楚,但换作我的话绝不允许此类事情发生。当今是飞速发展的时代,一切都需要速度,否则就会落后。也许某甲真的“印象深刻”,但那半年也就如此的近乎止步不前了,更不用说被其他同行甩到哪儿去了。
在老外的技术书籍上,经常告诫读者:“Don't reinvent the wheel.”(一直都讨厌这个该死的右引号会变成英文标点样式!)在我正看的《EJB 3 in Action》里面更戏谑地说道:“Most of us try to beg, borrow, or steal reusable code to make our lives easier.”(哼,又是你!)很有拿来主义的味道。牛顿也说过:“我站在巨人的肩膀上。”前人已有的成果和经验,为什么不用?
作为我来说,遇到问题,时间不太紧的情况下,小则两三天,大则一两周,自己捉摸不出来,就要向人请教;时间紧迫时直接去问。我觉得这样才能在较短的时间里学得更多,同时也没有放弃独立思考。至于“印象深刻”,用得多自然就深刻了;而所谓“真正学到东西”,请教别人就学不到吗?再说多和他人讨论,往往能收获得更全面。
8/3/2007
今天下午接到党委的电话,让我周末去参加转正大会。想起入党的经历,还真有点摸不着头脑。
家人们都一致说入党好,所以与其说我是为了入党,还不如说是为了家人的心愿,尽管我总是声称:“入党是手段不是目的。”。
大一的时候,我可能还真得算个“积极分子”,早早就递交了申请书。接下来一年多看着好多同学都入党了,我却没得到什么消息,想想我一不拔尖二没当官三无建树,还和年级辅导员大吵一架(虽然我赢了,但事情还是照着辅导员说的办,接着那年的形势与政策教育我被直接打 60 分,因此奖学金也没了),怎么也轮不到我吧。
转眼间已经大三下学期了,我又突然被通知参加党校培训。看样子党还是惦记着我呢!党校结业后,又是石沉大海。然后到大四快毕业忙着找工作的时候,学院把我列为“发展对象”了。接下来顺理成章,组织生活、思想汇报(因为时间从递交申请书算起,写了好多哦,还要手写)、民意调查……最后就是学院党支部书记的“面试”。头几天,辅导员还叮嘱我多看点时事。结果我什么都没准备,硬着头皮去了。政治理论问题我一个都没答上,连三个代表都背错了;时事方面更是一头雾水。我想最后让我通过的原因是“检举有功”吧。谁叫大一的 C++ 老师在课堂上大肆传教呢?
辗转辗转,我找工作搞得团团转,直到去年底才安定下来。到了该转正的时候,就按要求备齐材料交给了党委。六月底我接到电话,通知我参加组织生活,一定和建党节有关。但我因为有事就推辞了。过后我还说,重要时刻的组织生活都不去,怕是没多大希望了。最后直到现在。
我不喜欢政治和教条,所以要我去学这个思想那个理论的肯定不行。所谓的“共产主义”看起来“完美”,但虚无缥缈得近乎荒诞,而且也极难维系,至少地球人做不到。做事至少要对得起良心,不是入党就可以标榜的。