RSet的维护策略 #
RSet 的维护策略,也就是说哪些引用关系需要加入到 RSet:
- 如果是同一个 Region 的对象,它们之间相互引用是不必维护的,这个很好理解,因为不存在跨 Region 的问题;
- 由年轻代 Region 出发到其他 Region 的,无论目标是年轻代还是老年代,这一类引用也都不用维护。因为结合 young GC 和 mixed GC 的策略可以知道,无论是什么回收模式,年轻代的全部 Region 都会被清理,这就意味着一定会对年轻代的所有对象进行遍历;
- 从 CSet 集合的 Region 出发指向其他 Region 的,也不需要维护,理由和第 2 点是一样的。
总的来说,RSet 需要维护的引用关系只有两种:
- 非 CSet 老年代 Region 到年轻代 Region 的引用。
- 非 CSet 老年代 Region 到 CSet 老年代 Region 的引用。