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](https://bugs.openjdk.java.net/browse/JDK-8209683) 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)")                                    \
                                                                             \
```