Global Concurrent Marking会让接下来的GC转变为Mixed GC,且为其提供了CSet。Mixed GC可能会继续进行多次,才会转变回Young GC,直到下一次Global Concurrent Marking。
我不明白的是,反过来,Mixed GC转变回Young GC是由什么因素决定的?
有的小伙伴在博文中提到是要清理完整个CSet。可是,毕竟只有Global Concurrent Marking才会更新CSet,如果多次Mixed GC,则显然都是对最初那次Global Concurrent Marking所得到的CSet来进行。在此期间,region中对象的生存情况可能已经有了很大变化。如果一定要清理完整个CSet才变回Young GC,怕是与G1的“优先清理垃圾最多的region”的思路不符吧?