WeakHashMap 实践

2017-01-10  本文已影响0人  恶魔幻心

WeakHashMap的键是“弱键”,通过WeakReference和ReferenceQueue实现。

“弱键”是一个“弱引用(WeakReference)”,在Java中,WeakReference和ReferenceQueue 是联合使用的。在WeakHashMap中亦是如此:如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。 接着,WeakHashMap会根据“引用队列”,来删除“WeakHashMap中已被GC回收的‘弱键’对应的键值对”。

一旦内存不够,在GC时,没有被引用的表项又会很快被清除掉,从而避免系统内存溢出


String w1 =newString("one");

Map wmap =newWeakHashMap();

wmap.put(w1, "w1");

//将w1设置null。

//这意味着“弱键”w1再没有被其它对象引用,调用gc时会回收WeakHashMap中与“w1”对应的键值对

w1 =null;

//内存回收。这里,会回收WeakHashMap中与“w1”对应的键值对

System.gc();

上一篇 下一篇

猜你喜欢

热点阅读