cms 和 g1 垃圾收集器之间有什么区别使 g1 更好?
大多数地方都说这是因为在 G1 中,堆被划分为区域,然后将区域集合标记为年轻/老年代,并且 gc 在少数区域而不是整个堆上运行。我试图进一步理解这一点,并有几个问题:
当年轻 gc 运行(即停止世界)时,它会在所有年轻代区域上运行,这意味着堆的整个年轻部分和年轻代的不少区域。那么它在时间上与 CMS 相同吗?
增量压缩 - 混合收集 - 现在这是我认为 G1 具有优势的地方,因为整个堆的并发标记不断发生,并且在所有年轻区域 + 少数旧区域(首先是大多数垃圾)上运行的混合 gc 周期。所以它会继续从老年代清除垃圾,而不是等待 Full gc 发生。这是正确的吗 ?
上述几点是否正确?还有哪些其他区别使 g1 更好?