JEP draft: Generational Shenandoah

OwnerWilliam Kemper
TypeFeature
ScopeImplementation
StatusSubmitted
Componenthotspot / gc
Discussionhotspot dash gc dash dev at openjdk dot org
Reviewed byRoman Kennke
Created2025/05/14 17:53
Updated2025/05/14 21:31
Issue8356990

Summary

Change the generational mode of the Shenandoah garbage collector from an experimental feature into a product feature.

Non-Goals

Motivation

The generational mode for Shenandoah was integrated into JDK 24 by JEP 404. Since the release of JDK 24, the generational mode has undergone many stability and performance improvements and is ready to drop the experimental status in JDK 25.

Description

In JDK 24, the generational mode of Shenandoah is enabled by -XX:+UseShenandoahGC -XX:+UnlockExperimentalVMOptions -XX:ShenandoahGCMode=generational. Making the generational mode a product feature would mean that -XX:+UnlockExperimentalVMOptions would no longer be necessary. No other flags, nor their default values, will be changed. We do not expect any existing Shenandoah users to be impacted by this change.

Testing

Removing the requirement to specify UnlockExperimentalVMOptions does not make its presence on the command line an error. Existing users of the generational mode will not need to make any changes to continue using the generational mode. As for testing of the feature itself, our nightly commits run the hotspot_gc_shenandoah jtreg test suite, and, additionally: dacapo, extremem, specjbb2015, specjvm2088, heapothesys on multiple platforms. Several users have also reported success running demanding workloads.