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

本文探讨了JVM中的分代垃圾收集器如何处理隔代引用和跨区引用问题,重点介绍了记忆集(Remembered Set)的概念及其在G1收集器中的应用。记忆集通过卡表和写屏障(Write Barrier)来维护跨代引用,防止错误回收。同时,文章提到了处理对象消失的两种方案:增量更新和原始快照,并简单讨论了浮动垃圾的现象。
摘要由CSDN通过智能技术生成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值