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

CSR: JEP 377: ZGC: A Scalable Low-Latency Garbage Collector (Production)

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P3 P3
    • 15
    • hotspot
    • None
    • gc
    • behavioral
    • minimal
    • add/remove/modify command line option
    • JDK

      Summary

      Change the Z Garbage Collector from an experimental feature into a product feature.

      Problem

      ZGC is currently an experimental feature enabled via the command-line options -XX:+UnlockExperimentalVMOptions -XX:+UseZGC. JEP 377 proposes to make ZGC 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.

      • UseZGC
      • ZAllocationSpikeTolerance
      • ZFragmentationLimit
      • ZMarkStackSpaceLimit
      • ZCollectionInterval
      • ZProactive
      • ZUncommit
      • ZUncommitDelay

      Specification

      diff --git a/src/hotspot/share/gc/shared/gc_globals.hpp b/src/hotspot/share/gc/shared/gc_globals.hpp
      --- a/src/hotspot/share/gc/shared/gc_globals.hpp
      +++ b/src/hotspot/share/gc/shared/gc_globals.hpp
      @@ -164,7 +164,7 @@
         experimental(bool, UseEpsilonGC, false,                                   \
                 "Use the Epsilon (no-op) garbage collector")                      \
                                                                                   \
      -  experimental(bool, UseZGC, false,                                         \
      +  product(bool, UseZGC, false,                                              \
                 "Use the Z garbage collector")                                    \
                                                                                   \
         experimental(bool, UseShenandoahGC, false,                                \
      diff --git a/src/hotspot/share/gc/z/z_globals.hpp b/src/hotspot/share/gc/z/z_globals.hpp
      --- a/src/hotspot/share/gc/z/z_globals.hpp
      +++ b/src/hotspot/share/gc/z/z_globals.hpp
      @@ -38,26 +38,26 @@
                          range,                                                   \
                          constraint)                                              \
                                                                                   \
      -  experimental(double, ZAllocationSpikeTolerance, 2.0,                      \
      +  product(double, ZAllocationSpikeTolerance, 2.0,                           \
                 "Allocation spike tolerance factor")                              \
                                                                                   \
      -  experimental(double, ZFragmentationLimit, 25.0,                           \
      +  product(double, ZFragmentationLimit, 25.0,                                \
                 "Maximum allowed heap fragmentation")                             \
                                                                                   \
      -  experimental(size_t, ZMarkStackSpaceLimit, 8*G,                           \
      +  product(size_t, ZMarkStackSpaceLimit, 8*G,                                \
                 "Maximum number of bytes allocated for mark stacks")              \
                 range(32*M, 1024*G)                                               \
                                                                                   \
      -  experimental(uint, ZCollectionInterval, 0,                                \
      +  product(uint, ZCollectionInterval, 0,                                     \
                 "Force GC at a fixed time interval (in seconds)")                  \
                                                                                   \
      -  experimental(bool, ZProactive, true,                                      \
      +  product(bool, ZProactive, true,                                           \
                 "Enable proactive GC cycles")                                     \
                                                                                   \
      -  experimental(bool, ZUncommit, true,                                       \
      +  product(bool, ZUncommit, true,                                            \
                 "Uncommit unused memory")                                         \
                                                                                   \
      -  experimental(uintx, ZUncommitDelay, 5 * 60,                               \
      +  product(uintx, ZUncommitDelay, 5 * 60,                                    \
                 "Uncommit memory if it has been unused for the specified "         \
                 "amount of time (in seconds)")                                    \
                                                                                   \

            pliden Per Liden (Inactive)
            pliden Per Liden (Inactive)
            Erik Ă–sterlund, Stefan Karlsson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: