Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8241457

JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector (Production)

    Details

    • Author:
      Aleksey Shipilev
    • JEP Type:
      Feature
    • Exposure:
      Open
    • Subcomponent:
      gc
    • Scope:
      Implementation
    • Discussion:
      hotspot dash gc dash dev at openjdk dot java dot net
    • Effort:
      XS
    • Duration:
      XS
    • JEP Number:
      379

      Description

      Summary

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

      Non-Goals

      • This JEP does not propose to change the default GC, which remains G1.

      • This JEP does not propose to change the Shenandoah development process, which will continue to support both the latest JDK and popular LTS/STS JDKs.

      Motivation

      Shenandoah was integrated into JDK 12 by JEP 189. It was marked as experimental in order to match the status of other new GCs, notably Epsilon GC and ZGC. Now Shenandoah is ready to drop its experimental status in mainline JDKs, as was recently suggested for ZGC in JEP 377.

      Description

      In JDK 12 and later, Shenandoah is enabled via the -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC options. Making Shenandoah a product feature means that -XX:+UnlockExperimentalVMOptions would no longer be needed. A bunch of related Shenandoah options would turn from "experimental" to "product", subject to review. The default values for the options would not change. It makes this change a rather cosmetic change in flag classes.

      At the time of its integration into JDK 12, Shenandoah had been already shipping in Red Hat 8u and 11u downstream releases as a supported garbage collector, and used by RHEL and RHEL downstream users. Because of this, Shenandoah 8u and Shenandoah 11u are already non-experimental and thus not affected by this change. Since there are only a few users that run something other than 8u and 11u, we expect the actual impact of this change to be minuscule.

      Testing

      Testing changes are expected to be little to none. This is largely because the Shenandoah code is synced across 8u, 11u, 14u, and dev, and tests already accept that Shenandoah can be either "experimental" or "product".

        Attachments

          Activity

            People

            • Assignee:
              shade Aleksey Shipilev
              Reporter:
              shade Aleksey Shipilev
              Owner:
              Aleksey Shipilev
              Reviewed By:
              Andrew Hughes, Roman Kennke
              Endorsed By:
              Mark Reinhold
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: