JEP 173:淘汰一些很少使用的 GC 组合
概括
删除三种很少使用的垃圾收集器组合,以减少持续的开发、维护和测试成本。
目标
目前存在三种 GC 组合,目前使用不足,无法保证未来的支持:
- DefNew + CMS
- ParNew + SerialOld
- 增量式内容管理系统
这些组合给 GC 代码库增加了额外的复杂性,消耗了宝贵的测试资源,而给用户带来的价值却微乎其微。为了简化 GC 代码库并提高测试和可持续性,我们建议删除这些组合。
动机
保留所有现有的 GC 组合需要很大的成本。没有足够的资源来测试所有这些。由于 GC 代码库的复杂性,新功能的实现和测试需要更长的时间。作为迈向更简单、更稳定、更快的代码库的第一步,我们需要删除一些很少使用的组合。
描述
DefNew + CMS 和 ParNew + SerialOld 组合以及 CMS 的增量模式将被弃用(记录警告消息)。这可以解释为这些 GC 组合将在即将发布的某个主要版本中被删除。
以下命令行标志组合将受到影响:
旗帜
气相色谱配置
-XX:-UseParNewGC
-XX:+UseConcMarkSweepGC
DefNew + CMS
-XX:+UseParNewGC
ParNew + SerialOld
-Xincgc
ParNew + iCMS
-XX:+CMSIncrementalMode
-XX:+UseConcMarkSweepGC
ParNew + iCMS
-XX:+CMSIncrementalMode
-XX:+UseConcMarkSweepGC
-XX:-UseParNewGC
DefNew + iCMS
备择方案
继续支持未经测试的 GC 组合。
测试
-
进行测试以验证相应的命令行标志是否会适当生成警告和错误消息。
-
确保所有剩余的 GC 组合都经过连续测试。
风险和假设
关于所讨论的 GC 组合,基本上存在三个假设:
-
当前使用增量 CMS 的大多数用户将受益于切换到“普通”CMS。
-
使用 DefNew + CMS 的用户将受益于使用 ParNew + CMS。
-
使用 ParNew + SerialOld 的用户将受益于使用 ParallelScavenge + SerialOld
存在其中一项或多项假设不成立的风险。据我们目前所知,风险很小。
影响
-
兼容性:我们将弃用命令行选项。
-
用户体验:某些用户可能需要更改当前选择的 GC。希望这将是一个更好的改变。
-
文档:由于命令行选项发生更改,因此需要更新相应的文档。我们还需要添加发行说明。