2

每当使用 CMS 出现并发模式失败或升级失败时,它都会使用单线程进行完整 GC。为什么它不能使用并行收集器进行完整 GC 以减少完整 GC 惩罚?

4

1 回答 1

2

除了没有以这种方式实施并且工程工作集中在 G1 之外,没有什么特别的原因。CMS 的大多数用户只是尝试以一种永远不会发生的方式对其进行调整,“从不”意味着以大于无论如何需要 JVM 重新启动的时间间隔进行调整。并行旧收集器不能通过简单地调用其代码来重用,因为收集器之间的内部数据结构不同,因此它将涉及非平凡的实现工作。

谷歌开发人员已经提出 了一个补丁来为 CMS 贡献并行的完整 GC,但我不会指望它会很快在任何 openjdk 构建中可用。

于 2016-09-19T12:30:26.873 回答