WeakHashMap概念和原理以及简单案例
参考资料
1.一文搞懂工作原理
概念和原理说明
注:垃圾回收是优先级非常低的线程,不能被显示调用,当内存不足的时候会启用
下面是 的实现原理拆分:
public class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V> {... ...// 用于存储需要清理的引用对象private final ReferenceQueue<Object> queue = new ReferenceQueue<>();... ...// 内部Entry继承自WeakReference,从而有弱引用特性private static class Entry<K,V> extends WeakReference<Object> implements Map.Entry<K,V> {... ...}... ...// 用于移除内部不用的Entry来释放内存private void expungeStaleEntries() { ... ... }... ...
}
原理说明
1.每次GC清理对象后,引用对象被放置到 之中
2.每次访问 都会调用 遍历删除 中引用对象
使用案例
1、缓存中使用
由于 是弱引用,因此适合在缓存中使用,当内存不足GC的时候,会清理不用的引用达到释放内存的目的
2、不要使用基础类型作为的key
我大概理解的是,基础类型的一定范围不会被回收
原文:.put方法执行的时候i会被封装为类型的,保留了-128到127的缓存。但是对于int来说范围大很多,因此那些Key