首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

握有引用java.lang.ref 和 WeakHashMap

2012-09-02 
持有引用java.lang.ref 和 WeakHashMapThinking in java P554??持有引用如果想继续持有对某个对象的引用,

持有引用java.lang.ref 和 WeakHashMap

Thinking in java P554

?

?

持有引用

如果想继续持有对某个对象的引用,希望以后能够反问到该对象,

但是也希望能够允许垃圾回收器是否它,这是就应该使用Reference

对象。这样,可以继续使用改对象,而再内存消耗完时允许是否它。

?

以Reference对象作为你和普通引用的媒介,另外,一定不能有

普通的引用指向那个兑现g.zheyang就能达到上述目的。

(普通的引用指没有经Reference对象包装过的引用)。

如果垃圾回收器发现某个兑现沟通过普通引用是可获得的,该

对象就不会被释放。

?

SoftReference, WeakReference 和 PhantomReference由强到若,

对应不同级别的"可获得性".Softreference用以是想内存

敏感的高速缓存。Weak reference是为实现个"规范映射"

而设计的,它部妨碍垃圾回收器回收映射的键或值。

规范映射中对象的实力可以在程序的多处被同时使用,

以节省存储空间。Phantomreference用以调度回收前

的清理工作,比Java终止机制更灵活。

?

?

?

结果:

zing Key 209

Finalizing Key 208

Finalizing Key 206

Finalizing Key 205

Finalizing Key 203

Finalizing Key 202

Finalizing Key 200

Finalizing Key 199

Finalizing Key 197

Finalizing Key 196

Finalizing Key 194

Finalizing Key 193

Finalizing Key 191

Finalizing Key 190

Finalizing Key 188

...

可以看到垃圾回收期每隔三个键就跳过一个,因为指向那个键的普通引用被存如了Keys数组,

所以偶那些对象不能被垃圾回收器回收。

热点排行