Java的强引用、软引用、弱引用和虚引用
- 1. 强引用
- 2. 软引用
- 3. 弱引用
- 4. 虚引用
- 总结
Java的强引用、软引用、弱引用和虚引用可以用来标识GC时判断对象是否达到回收的条件,下面结合Java代码看看这四类引用吧。
1. 强引用
是最普通的引用方式,通过new
关键字创建对象时所使用的引用。只要强引用存在,垃圾回收器就不会回收
对象。代码如下:
Object obj = new Object(); // 强引用
2. 软引用
在内存不足
时,垃圾回收器会回收软引用指向
的对象。可以通过SoftReference
类来创建软引用。代码如下:
SoftReference<Object> softRef = new SoftReference<>(new Object());
Object obj = softRef.get(); // 获取软引用指向的对象
3. 弱引用
垃圾回收器在下一次回收时,无论内存是否充足
,都会回收弱引用指向的对象。可以通过WeakReference
类来创建弱引用。代码如下:
WeakReference<Object> weakRef = new WeakReference<>(new Object());
Object obj = weakRef.get(); // 获取弱引用指向的对象
4. 虚引用
虚引用主要用于跟踪对象被垃圾回收器回收
的活动,不能通过虚引用访问对象。可以通过PhantomReference
类来创建虚引用。代码如下:
ReferenceQueue<Object> queue = new ReferenceQueue<>();
PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), queue);
Object obj = phantomRef.get(); // 获取虚引用指向的对象(始终返回null)
Java4种引用的级别由高到低依次为:
强引用 > 软引用 > 弱引用 > 虚引用
总结
以上,我们了解了关于Java对象的引用级别:强引用 > 软引用 > 弱引用 > 虚引用
。
上一篇 Java SPI机制详解 | 记得点赞收藏哦!!! | 下一篇 理解Java的自定义类加载器ClassLoader看这一篇就够了!!! |