ConcurrentReferenceHashMap

ConcurrentReferenceHashMap

 

一个Concurrent的HashMap,对键和值使用软引用或弱引用。

在并发访问时支持更好的性能,可用作Collections.synchronizedMap(new WeakHashMap<K,Reference<V>>())的替代品。

此实现遵循与ConcurrentHashMap相同的设计约束,支持null的key或value。

 

既然可用作Collections.synchronizedMap(new WeakHashMap<K,Reference<V>>())的替代品,就要先介绍一下WeakHashMap。

WeakHashMap

Entry<K,V>[] table;  其Entry继承了WeakReference

private final ReferenceQueue<Object> queue = new ReferenceQueue<>();

在使用put(K,V)时,就会使用K,V,ReferenceQueue等参数构造Entry,因此GC时Entry就会进入queue

在使用get(K)、size() 等方法时,就会触发private void expungeStaleEntries()  使用queue.poll()识别哪些Entry已经被回收,重新整理table达到数据是实时的效果

 

上一篇:linux内存管理-页面的换入


下一篇:entry_points() got an unexpected keyword argument ‘group‘