JVM垃圾回收器ParallelGC针对minorGC过程中标记之后为什么需要将卡页全部处于clean状态?是否存在逻辑漏洞?

19 阅读1分钟

Minor GC 中把脏卡清除了(重置为 clean),回收结束前卡表都处于clean状态;“老年代对象 A 仍然引用年轻代对象 B,且之后 A 的引用字段没变 → 没有写屏障触发 → 卡页不会重新变脏 → 下次 Minor GC 时不会扫描这个卡 → 对象 B 被误回收”这种情况会发生吗?还是说parallelGC还有其他机制避免以上场景发生?