每当使用 CMS 出现并发模式失败或升级失败时,它都会使用单线程执行完整 GC。为什么不能使用并行收集器进行 Full GC 来减少 Full GC 惩罚?
最佳答案
除了没有以这种方式实现并且工程工作集中在 G1 之外,没有什么特别的原因。 CMS 的大多数用户只是尝试以一种永远不会发生的方式对其进行调整,“从不”意味着间隔大于 JVM 重新启动所需的时间间隔。并行旧收集器不能通过简单地调用其代码来重用,因为收集器之间的内部数据结构不同,因此这将涉及不平凡的实现工作。
Google 开发人员有 proposed一个patch向 CMS 贡献并行完整 GC,但我不指望它很快就会在任何 openjdk 版本中可用。
关于java - 为什么CMS Full GC是单线程的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39569649/