Java CMS GC - 初始标记

时间:2018-05-14 05:50:12

标签: java garbage-collection

我正在阅读CMS GC,需要一些澄清。 在website我们可以找到:

  

阶段1:初始标记。这是CMS期间的两个世界末日事件之一。此阶段的目标是将旧生成中的所有对象标记为直接GC根或从Young Generation中的某个活动对象引用。后者很重要,因为老一代是分开收集的。

必须找到从Young代到Old代的参考资料,但此时如何扫描Young Generation?像小型GC一样完全扫描吗?

1 个答案:

答案 0 :(得分:0)

  

必须找到从Young代到Old代的参考资料,但此时如何扫描Young Generation?像小型GC一样完全扫描吗?

是的。扫描整个年轻空间。

不。它不像小型GC。年轻(次要)GC不扫描整个年轻空间。年轻的集合遍历对象图访问(和应对)只有活对象。

正如您可能猜到的那样,从描述初始扫描可能是GC暂停的一个重要因素。 CMS通常在年轻GC完成后不久做出初始标记,假设当时年轻空间很小。

同样的关注对于CMS的备注阶段是有效的,其中还涉及年轻空间全扫描。您可以在my article中找到有关CMS机制的更多详细信息。