JVM《五种引用》强、软、弱、虚、终结器

结合此图观看

在这里插入图片描述

1.强引用

我们平时在用的所有的引用都属于强引用。比如,new了一个对象,同等号赋值给了一个变量,那么这个变量强引用了刚刚的对象。
强引用的特点是,只要沿着GC Root的引用,能够找到他,那么他就不会被垃圾回收。
只有所有GC Roots对象都不通过【强引用】引用该对象,该对象才能被垃圾回收。

2.软引用

在上图B对象与A2对象断开的时候,且A2对象仅有软引用引用该对象时,在垃圾回收后,内存仍不足时会再次出发垃圾回收,回收软引用对象。
因为软引用也占有一定空间所以可以配合引用队列来释放软引用自身

3.弱引用

在上图B对象与A3对象断开的时候也就是仅有弱引用引用该对象时,在垃圾回收时,无论内存是否充足,都会回收弱引用对象
因为弱引用也占有一定空间所以可以配合引用队列来释放弱引用自身

4.虚引用

必须配合引用队列来使用,主要配合ByteBuffer使用,被引用对象回收时,会将虚引用入队,由Reference Handler线程调用虚引用相关方法释放直接内存

5.终结器引用

用于实现对象的 finalize() 方法,无需手动编码,但其内部需配合引用队列使用,在垃圾回收时,终结器引用入队(被引用对象暂时没有被回收),再由Fianlizer线程通过终结器引用找到被引用对象并调用它的finalize方法,第二次GC时才能回收被引用对象

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值