WeakHashMap
WeakHasMap是针对弱引用的一个类,深入理解java虚拟机中对java引用概念进行了详细说明,在此不做重复解释。需要注意的是弱引用只存活到下一次垃圾回收之前,WeakHasMap中的键都是弱引用类型,所以该类可以自动移除已经被回收的键所对应的k-v对。
- 该类支持null值输入
- 默认每次扩容一倍
- fail-fast
类定义
继承了AbstractMap类,实现了Map接口,注意该类没有实现cloneable、serializable接口
1 | public class WeakHashMap<K,V> |
类变量和成员变量
1 | //默认初始容量 |
构造方法
1 |
|
entry
WeakHashMap中的entry继承了WeakReference,可以在gc时放入ReferenceQueue
1 | private static class Entry<K,V> extends WeakReference<Object> implements Map.Entry<K,V> { |
put
put函数会自动调用移除已释放引用相关方法
1 |
|
get
get方法也会自动调用清除已释放引用相关的方法
1 |
|
expungeStaleEntries
该方法用于移除已释放元素,该类中很多方法会间接调用该方法,如size,getTable,resize,get,put
1 |
|
resize
1 | //需传入扩容后容量 |