四种引用类型:强、软、弱、虚引用详解
引言:引用的强度 在JDK 1.2之前,Java的引用只有一种:要么有引用,对象存活;要么无引用,对象死亡。 但在实际应用中,我们需要更灵活的引用语义: 缓存对象:内存充足时保留,不足时清理 监控对象:对象被回收时得到通知 弱关联对象:不影响对象的生命周期 JDK 1.2引入了四种引用类型,将引用分为 强引用、软引用、弱引用、虚引用,它们的强度依次递减。 引用强度排序: 强引用 > 软引用 > 弱引用 > 虚引用 理解这四种引用类型,是实现高效缓存、监控对象生命周期的基础。 四种引用类型概览 引用类型 类 回收时机 典型使用场景 强引用 直接引用 永不回收(除非无引用) 普通对象引用 软引用 SoftReference 内存不足时回收 缓存、图片缓存 弱引用 WeakReference GC时必定回收 ThreadLocal、WeakHashMap 虚引用 PhantomReference 无法通过引用获取对象 对象回收监控、堆外内存清理 强引用(Strong Reference) 定义 强引用 是最常见的引用类型,使用 = 赋值运算符创建。 Object obj = new Object(); // 强引用 特点 只要有强引用,对象永不回收 宁可OOM也不回收强引用对象 最普遍的引用方式 示例:强引用不会被回收 public class StrongReferenceDemo { public static void main(String[] args) { Object obj = new Object(); System.out.println("Before GC: " + obj); // 建议GC System.gc(); // 对象仍然存活 System.out.println("After GC: " + obj); // 仍然有效 } } 输出: ...