JEP 521:分代式申南多垃圾回收器

原文:JEP 521- Generational Shenandoah
作者:
日期:2025-10-26

负责人威廉·肯珀(William Kemper)
类型特性
范围JDK
状态已完成 / 已交付
版本25
组件HotSpot / 垃圾回收器(GC)
讨论地址hotspot - gc - dev@openjdk.org
相关内容JEP 404:分代式申南多垃圾回收器(实验性)
审核人马丁·多尔(Martin Doerr)、罗曼·肯克(Roman Kennke)、托马斯·施图费(Thomas Stuefe)
批准人弗拉基米尔·科兹洛夫(Vladimir Kozlov)
创建时间2025/05/14 17:53
更新时间2025/08/01 18:15
问题编号8356990

摘要

将申南多垃圾回收器的分代模式从实验性特性转变为产品特性。

非目标

本特性的目标并非改变申南多垃圾回收器的默认模式。默认情况下,申南多将继续使用单代模式。

动机

申南多的分代模式在 JDK 24 中由 JEP 404 作为实验性特性集成进来。

从那时起,我们实施了许多稳定性和性能方面的改进。我们在多个平台上使用自己的单元测试以及知名的基准测试和工作负载,包括 DaCapoSPECjbb2015SPECjvm2008Heapothesys 对其进行了广泛测试。已有几位用户反馈在运行高要求的工作负载时取得了成功。

现在是时候取消分代模式的实验状态了。

描述

在 JDK 24 中,通过以下命令行选项启用申南多的分代模式:

$ java -XX:+UseShenandoahGC \
       -XX:+UnlockExperimentalVMOptions \
       -XX:ShenandoahGCMode=generational ...
  

一旦分代模式成为产品特性,第二个选项 -XX:+UnlockExperimentalVMOptions 将不再需要。

我们不会更改任何其他选项或它们的默认值。

我们预计现有用户不会受到此更改的影响。取消指定 -XX:+UnlockExperimentalVMOptions 的要求,并不会使该选项出现在命令行上成为错误,所以现有用户无需进行任何更改即可继续使用分代模式。