强引用,软引用,弱引用,虚引用 的区别

首先了解相关概念:

在这里插入图片描述
根对象(GC Root):不能被垃圾回收的对象
可达性分析算法 :Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象,扫描堆中对象,看是否能够沿着GC Root对象为起点的引用链找到该对象,找不到,表示可以回收

四种引用:

一.强引用:

大部分对象都是强引用,比如常见的new 出来的对象,只有所有GC Roots对象都不通过强引用引用该对象才能被垃圾回收

二.软引用(SoftReference):

只有软引用引用该对象时,在垃圾回收后,内存仍然不足时会再次发出垃圾回收,回收软引用对象
可以配合引用队列来释放软引用自身

三.弱引用(WeakReference):

只有弱引用引用该对象时,在垃圾回收时,无论内存是否充足,都会回收弱引用对象
可以配合引用队列来释放弱引用自身

四.虚引用(PhantomReference):

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

五.终结器引用:

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

摘自:https://www.bilibili.com/video/BV1yE411Z7AP?p=54

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值