JDK 21 Feature List Drops Generational Shenandoah GC, Future Release Possible
Java Development Kit (JDK) 21 is currently in its initial rampdown phase as of June 8, with its feature set now officially frozen. Among the planned features, one notable exclusion has surfaced: the generational Shenandoah garbage collector (GC). This experimental capability aimed to enhance the existing Shenandoah GC is set to be dropped from the upcoming release.
The JDK Enhancement Proposal (JEP) page for JDK 21, slated for production release on September 19, reveals that the feature set has been trimmed from 16 to 15. Generational Shenandoah, initially included to introduce experimental generational collection capabilities to Shenandoah GC, is being removed due to a lack of readiness. Roman Kennke of Amazon, the author of the JEP for generational Shenandoah, made the decision to withdraw it from JDK 21. Oracle, which oversees the development of standard Java, confirms that the feature will be reevaluated for inclusion in a future JDK release when it is more mature.
Generational Shenandoah was designed to improve sustainable throughput, load-spike resilience, and memory utilization by adding generational collection capabilities to the Shenandoah GC. The goals included providing an experimental generational mode without disrupting the non-generational Shenandoah, with an eye toward making it the default in a future release. Additional objectives were to reduce the sustained memory footprint while maintaining low GC pauses, lower CPU and power usage, sustain high throughput, and minimize the risk of full collections during allocation spikes. Importantly, non-generational Shenandoah would remain unchanged and continue to be supported.
The proposed removal of generational Shenandoah is under review until June 14 and primarily affects users of the Shenandoah GC in OpenJDK builds that include it. This change does not impact other garbage collectors like the G1 GC, Z Garbage Collector (ZGC), or distributions of Java that use these collectors, such as Oracle OpenJDK and the Oracle JDK.
JDK 21, set to be a long-term support (LTS) release, includes other features such as a preview of structured concurrency. LTS releases receive extended support for several years, unlike regular feature releases, which only get six months of support. The previous LTS release was JDK 17, released in September 2021. JDK releases occur biannually, with LTS versions appearing every two years. The current feature release, JDK 20, was published in March and will be supported until the next feature release.
The exclusion of generational Shenandoah from JDK 21 highlights the rigorous evaluation and development process that Java enhancements undergo before being included in a production release. While this feature’s absence may be a disappointment to some, its eventual inclusion in a more polished form will ensure it meets the high standards expected by the Java community. As JDK 21 approaches its official release date, developers and organizations can look forward to a robust set of new features and improvements that reinforce Java’s position as a leading platform for modern application development.