Java虚拟机中有四种引用类型,它们分别是:
-
强引用(Strong Reference):
- 强引用是最普通的引用类型。当一个对象被强引用关联时,它就不会被垃圾回收器回收,即使内存不足时也不会回收。大多数情况下,我们使用的都是强引用。
Object obj = new Object(); // 强引用
-
软引用(Soft Reference):
- 软引用用于描述一些还有用但非必需的对象。当系统内存充足时,软引用的对象不会被回收;当系统内存不足时,垃圾回收器可能会回收软引用的对象。软引用通常用于实现缓存策略。
SoftReference<Object> softRef = new SoftReference<>(new Object()); // 软引用
-
弱引用(Weak Reference):
- 弱引用用于描述非必需的对象。当垃圾回收器工作时,无论内存是否充足,弱引用的对象都有可能被回收。弱引用通常用于实现一些缓存机制。
WeakReference<Object> weakRef = new WeakReference<>(new Object()); // 弱引用
-
虚引用(Phantom Reference):
- 虚引用是最弱的引用类型,几乎没有直接的访问价值。虚引用的主要作用是在对象被回收时接收一个系统通知,可以在对象被回收前或者被回收后执行一些操作。虚引用必须与引用队列(ReferenceQueue)一起使用。
PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), referenceQueue); // 虚引用
这些引用类型主要用于帮助程序员更灵活地控制对象的生命周期,实现一些特定的需求,如缓存、对象的后处理等。在使用不同的引用类型时,需要根据具体的业务场景和需求来选择合适的引用类型。
Was this helpful?
0 / 0