软引用、弱引用、虚引用介绍
根据jdk-api文档内容记一笔…
根据引用强度(或可达性强弱)从弱到强依次为:
强引用 > 软引用SoftReference<T>
> 弱引用WeakReference<T>
> 虚引用PhantomReference<T>
每种类型对应于一个不同的可到达性级别。
软引用
JVM保证在抛出OutOfMemoryError之前回收软引用的对象
适用于实现内存敏感的缓存
弱引用
引用对象判定为弱引用(无强引用和无软引用)时会回收对象
适用于实现无法防止其键(或值)被回收的规范化映射(ThreadLocal)
虚引用
在回收器确定其指示对象可另外回收之后,会被加入ReferenceQueue
能检测引用对象可达性的更改
适用于以某种比 Java 终结机制更灵活的方式调度 pre-mortem 清除操作(Cleaner堆外内存回收)