以下是我读到的内容了解并发标记和扫描算法
1)在初始标记中,GC根对象被标记为活动。在此阶段,应用程序的所有线程都将被暂停。
2)在并发标记期间,遍历标记的根对象并标记所有可到达的对象。此阶段与应用程序执行完全并发,因此所有应用程序线程都处于活动状态,甚至可以分配新对象。因此,可能存在另一个阶段,该阶段标记在并发标记期间已分配的对象。这有时被称为预清理,并且仍然与应用程序执行同时完成。
3)在最终标记中,所有线程都被挂起,所有剩余的新分配对象都被标记为活动。
问题: 由于此算法中存在最终标记阶段,在此期间应用程序线程被暂停,因此与并行GC相比,此算法的速度如何更快?
答案 0 :(得分:1)
那么与并行GC相比,该算法如何更快?
从垃圾回收中消耗的CPU周期来看,它并不快。它更快"从而与并行GC相比,它实现了更低的平均/第N百分位数暂停时间。
支付的价格是
编辑,以获取后续问题:
初始和最终标记不等同于STW标记扫描收集器的标记阶段。它们只是完整标记阶段的一部分。这意味着并非所有标记工作都在暂停期间完成。其余的是同时完成的。
那么这个标记使用所有的cpu核心,还是CMS中的单线程?
您可以通过比较CPU时间与墙上时间来解决这个问题。