JVM学习笔记(五)——常见问题说明

隔代引用与跨区引用解决方法——记忆集

在分代垃圾收集器中,是不是会有隔代引用,也就是说年轻代里的对象引用老年代里对象,同理老年代的对象引用年轻代里的对象。如果是年轻代引用老年代还好说,MinorGC是不会回收这类对象,但是如果是老年代引用年轻代里的对象,MinorGC如何区分年轻代中的对象有没有被老年代引用呢?如果不区分,那么是不是每次回收都要区老年代里去扫描一次?衍生到G1收集器也是一样,不同Region之间如果存在跨区引用,而G1回收是以Region为最小单位,如何避免这种跨区引用被回收?
在分代的垃圾收集器中,在新生代中会有一块内存专门来管理这类跨代引用,我们称之为记忆集(Remembered Set RSet),为什么要用用记忆集,是因为如果不使用记忆集,那么对新生代一次GC都要去老年代去重新扫描一次,防止存在老年代引用年轻代而将年轻代中的对象回收的这种情况,如果不使用记忆集,这就极大的影响垃圾收集的性能。
在G1收集器中它是通过如下的方式:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值