Java判断对象可以被回收——强引用、软引用、弱引用和虚引用详解。

8 篇文章 0 订阅

  在Java中,判断对象是否可以被回收通常依赖于对象的可达性。Java的垃圾回收器通过判断对象是否可达来确定是否可以回收对象,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看这一篇就够了!!!
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值