跳到主要内容

JEP 248:将 G1 设置为默认垃圾收集器

QWen Max 中英对照

概述

在 32 位和 64 位服务器配置上将 G1 设置为默认垃圾收集器。

动机

通常,限制 GC 暂停时间比最大化吞吐量更重要。对于大多数用户而言,切换到低暂停收集器(如 G1)相比以吞吐量为导向的收集器(例如当前默认的 Parallel GC),能够提供更好的整体体验。

在 JDK 8 及其更新版本中,G1 做出了许多性能改进,并且计划在 JDK 9 中进行进一步的优化。JDK 8u40 中引入了并发类卸载功能(JEP 156),这使得 G1 成为一个功能完备的垃圾收集器,可以作为默认选项使用。

描述

更改默认收集器很简单。

风险与假设

  • 此更改基于一个假设,即限制延迟通常比最大化吞吐量更重要。如果这个假设不正确,那么可能需要重新考虑此更改。

  • G1 被视为一个稳健且经过充分测试的收集器。它不应存在稳定性问题,但成为默认收集器将会提高其可见性,并可能揭示以前未知的问题。如果发现一个在 JDK 9 时间范围内无法解决的关键问题,我们将恢复使用 Parallel GC 作为 JDK 9 GA 的默认收集器。

  • G1 的资源使用与 Parallel 不同。当需要将资源使用开销降至最低时,应使用非 G1 的其他收集器,并且在此更改之后,必须明确指定替代收集器。