为什么JVM在标记-清除或标记-整理算法中,标记的是可回收对象,而不是存活对象?

在标记-清除或标记-整理过程中,假设有对象晋升到年老代,而此时在进行FULL GC的年老代处于已完成标记阶段工作但未完成清除阶段工作的状态。那么如果一开始标记的是存活对象,在清除阶段工作开始后,就会意外地把刚晋升到年老代的对象给清除掉,为了避免这种意外性,JVM就设计成一开始就标记可回收对象(JVM年老代GC时,部分算法实现不是Stop The World)。
同时,在年老代中标记存活对象的耗时要比标记可回收对象的耗时要多得多。

猜你喜欢

转载自blog.csdn.net/shenTiBeiTaoKongLa/article/details/106980813