请问 JVM card table 和 Rset 的工作原理?
CMS 中使用了 card table,目的说是为了解决跨代引用,避免扫描整个老年代,意思是还是需要扫描老年代的部分区域吗?对于卡表我是这么理解的 […当回收 Region2 的时候,扫描 Regio
顺晟科技
2021-06-28 19:38:35
342
CMS 中使用了 card table,目的说是为了解决跨代引用,避免扫描整个老年代,意思是还是需要扫描老年代的部分区域吗?对于卡表我是这么理解的 […
当回收 Region2 的时候,扫描 Region2 的 Rset,假设扫描到 Region2 的 card1,发现 Region1 中有对象引用了 card1 中的某些对象前面都没啥问题,可能就最后这一段理解有点偏差。【假设扫描到 Region2 的 card1】,扫描Region2中存活的对象时,不是去扫描Region2上的card1。首先还是要根据GC Root去找到Region2上被GC Root直接应用的存活对象,接着去扫描Region2对应的RSet表,根据RSet中的key值找到对应的Region以及卡页,再扫描这些卡页中对象,就可以找出跨代引用的对象。