对soft reference,比较容易理解它的用处。它天生就是为实现cache来设计的。关于weak reference,好像很少有人说的清楚。有的和soft reference混在一起谈,有的就是简单翻译java doc中的说明,看得出翻译的人自己也不是很理解,所以只能一笔带过。
我也一直不是很清楚它的实际用途,今天我突然想到WeakReference可能的设计目的。
从java的内存泄漏说起,以前说到java也会内存泄漏的时候往往会举这样的例子,对象保存在一个全局表中,造成无法回收。一般的解决方法是不要使用全局表或者记得更新。但在实际开发中,有时必须要使用全局表,但无法明确知道该对象是否可销毁,因为对象可能被多个线程共享访问,所以程序不能确切的更新表中的引用。这时候weak reference就有用武之地,用WeakHashMap构造全局表,key和value之间是weak reference,这样的话程序员就不用考虑更新该表了,只要该对象没有强引用指向它,gc就可以回收它了。
回头去找一个实际的例子对照看看,记得在JDK中,weak reference还是用的很频繁的。
posted on 2008-07-25 22:51
白色天堂 阅读(605)
评论(0) 编辑 收藏