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

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

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P4 P4
    • 15
    • hotspot
    • None
    • gc
    • behavioral
    • minimal
    • These turn a few runtime flags to product. No change in semantics.
    • add/remove/modify command line option
    • JDK

      Summary

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

      Problem

      Shenandoah GC is currently an experimental feature enabled via the command-line options -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC. JEP 379 proposes to make Shenandoah GC a product (non-experimental) feature, meaning it should be possible to enable without using -XX:+UnlockExperimentalVMOptions.

      Solution

      The following existing command-line options will be changed from experimental to product. Their default values will remain unchanged.

      • UseShenandoahGC
      • ShenandoahGCMode
      • ShenandoahGCHeuristics

      Specification

      diff -r 35eacefe265d src/hotspot/share/gc/shared/gc_globals.hpp
      --- a/src/hotspot/share/gc/shared/gc_globals.hpp        Mon May 11 14:38:25 2020 +0200
      +++ b/src/hotspot/share/gc/shared/gc_globals.hpp        Mon May 11 14:54:32 2020 +0200
      @@ -167,7 +167,7 @@
         product(bool, UseZGC, false,                                              \
                 "Use the Z garbage collector")                                    \
                                                                                   \
      -  experimental(bool, UseShenandoahGC, false,                                \
      +  product(bool, UseShenandoahGC, false,                                     \
                 "Use the Shenandoah garbage collector")                           \
                                                                                   \
         product(uint, ParallelGCThreads, 0,                                       \
      diff -r 35eacefe265d src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp
      --- a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp    Mon May 11 14:38:25 2020 +0200
      +++ b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp    Mon May 11 14:54:32 2020 +0200
      @@ -63,14 +63,14 @@
                 "This also caps the maximum TLAB size.")                          \
                 range(1, 100)                                                     \
                                                                                   \
      -  experimental(ccstr, ShenandoahGCMode, "satb",                             \
      +  product(ccstr, ShenandoahGCMode, "satb",                                  \
                 "GC mode to use.  Among other things, this defines which "        \
                 "barriers are in in use. Possible values are:"                    \
                 " satb - snapshot-at-the-beginning concurrent GC (three pass mark-evac-update);"  \
                 " iu - incremental-update concurrent GC (three pass mark-evac-update);"  \
                 " passive - stop the world GC only (either degenerated or full)") \
                                                                                   \
      -  experimental(ccstr, ShenandoahGCHeuristics, "adaptive",                   \
      +  product(ccstr, ShenandoahGCHeuristics, "adaptive",                        \
                 "GC heuristics to use. This fine-tunes the GC mode selected, "    \
                 "by choosing when to start the GC, how much to process on each "  \
                 "cycle, and what other features to automatically enable. "        \

            shade Aleksey Shipilev
            shade Aleksey Shipilev
            Roman Kennke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: