分类:
Java中的四种引用类型分别是强引用、软引用、弱引用和虚引用,
特点:
强引用(Strong Reference):强引用是最普通的引用类型,通过new关键字创建的对象默认就是强引用。当一个对象被强引用变量引用时,JVM就不会回收这个对象,即使在内存不足时也不会回收,只有当强引用变量被赋值为null时,才会被JVM回收。
软引用(Soft Reference):软引用是一种比强引用更弱的引用类型。当一个对象只被软引用变量引用时,在内存不足时,JVM会根据当前堆内存的使用情况决定是否回收这个对象。软引用可以用来实现缓存,当内存不足时,JVM会回收一些不常用的对象,从而保证程序不会因为内存不足而崩溃。
弱引用(Weak Reference):弱引用是一种比软引用更弱的引用类型。当一个对象只被弱引用变量引用时,JVM会在下一次垃圾回收时回收这个对象,不管当前内存是否足够。弱引用可以用来实现一些特殊的缓存策略,如虚拟机中的ThreadLocal类。
虚引用(Phantom Reference):虚引用是一种比弱引用更弱的引用类型。当一个对象只被虚引用变量引用时,JVM会在垃圾回收时将这个对象放入一个队列中,如果这个对象没有被任何强引用、软引用或弱引用变量引用,则这个对象会被回收。虚引用主要用于跟踪对象是否被垃圾回收器回收的情况,可以用于一些特殊的资源管理和清理任务。