跳到主要内容

JEP 173:弃用一些很少使用的垃圾收集器组合

QWen Max 中英对照

概述

移除三种很少使用的垃圾收集器组合,以降低持续的开发、维护和测试成本。

目标

目前,有三种 GC 组合的使用量还不足以保证未来会继续支持:

  • DefNew + CMS
  • ParNew + SerialOld
  • 增量 CMS

这些组合给 GC 代码库增加了额外的复杂性,并消耗了宝贵的测试资源,同时为用户带来的价值非常有限。为了简化 GC 代码库并改进测试和可持续性,我们建议移除这些组合。

动机

保留所有现有的 GC 组合成本很高。没有足够的资源来测试所有的组合。由于 GC 代码库的复杂性,新功能的实现和测试需要更长的时间。作为迈向更简单、更稳定、更快的代码库的第一步,我们需要移除一些很少使用的组合。

描述

DefNew + CMS 和 ParNew + SerialOld 组合以及 CMS 的增量模式将被弃用(记录警告消息)。这表示这些 GC 组合将在接下来的某个主要版本中被移除。

以下命令行标志组合将受到影响:

参数标志

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 组合有三种假设:

  • 目前大多数使用 Incremental CMS 的用户将从切换到“正常”CMS 中受益。
  • 使用 DefNew + CMS 的用户将从改用 ParNew + CMS 中受益。
  • 使用 ParNew + SerialOld 的用户将从改用 ParallelScavenge + SerialOld 中受益。

这些假设中有一个或多个无法成立的风险。就我们目前所能判断的,风险很小。

影响

  • 兼容性:我们将弃用命令行选项。
  • 用户体验:一些用户可能需要更改他们当前选择的 GC。希望这会是一个更好的改变。
  • 文档:由于命令行选项已更改,因此需要更新相应的文档。我们还需要添加发行说明。