跳到主要内容

JEP 248:使 G1 成为默认垃圾收集器

概括

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

动机

一般来说,限制 GC 暂停时间比最大化吞吐量更重要。对于大多数用户来说,切换到低暂停收集器(例如 G1)应该比面向吞吐量的收集器(例如当前默认的并行 GC)提供更好的整体体验。

JDK 8 及其更新版本中对 G1 进行了许多性能改进,并计划对 JDK 9 进行进一步改进。JDK 8u40 中并发类卸载 ( JEP 156 )的引入使 G1 成为功能齐全的垃圾收集器,准备成为默认。

描述

更改默认收集器很简单。

风险和假设

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

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

  • G1的资源使用与Parallel不同。当需要最小化资源使用开销时,应使用 G1 以外的收集器,并且在此更改之后,必须显式指定备用收集器。