Summary
The HotSpot option -XX:+FastTLABRefill should be deprecated and set to a default of off.
Problem
- Newly integrated Memory-Leak Profiler doesn't work with FastTLABRefill
- Upcoming Low Overhead profiler doesn't work with FastTLABRefill
- Option complicates already complicated code paths
- Option is actually default off (if you do not change default GC from G1)
- Only works with C1 (interpreter and C2 don't use this option)
- Only works with SerialGC and ParallelGC (and CMS)
Note: When using Serial/Parallel and only C1 there is a performances regression of 1%.
Solution
The option should be removed and this first step is to deprecate it and set it to false.
Specification
diff -r 9a9c764bc2d5 src/hotspot/share/runtime/arguments.cpp
--- a/src/hotspot/share/runtime/arguments.cpp Mon Nov 06 10:20:01 2017 +0100
+++ b/src/hotspot/share/runtime/arguments.cpp Wed Nov 08 09:58:24 2017 +0100
@@ -386,2 +386,3 @@
{ "IgnoreUnverifiableClassesDuringDump", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
+ { "FastTLABRefill", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
diff -r 9a9c764bc2d5 src/hotspot/share/runtime/globals.hpp
--- a/src/hotspot/share/runtime/globals.hpp Mon Nov 06 10:20:01 2017 +0100
+++ b/src/hotspot/share/runtime/globals.hpp Wed Nov 08 09:58:24 2017 +0100
@@ -2022,3 +2022,3 @@
\
- product(bool, FastTLABRefill, true, \
+ product(bool, FastTLABRefill, false, \
! "(Deprecated) Use fast TLAB refill code") \
- csr of
-
JDK-8190925 Deprecate FastTLABRefill and set default off
-
- Resolved
-