--- old/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp 2018-04-26 11:18:00.173982624 +0200 +++ new/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp 2018-04-26 11:17:59.732969611 +0200 @@ -57,6 +57,7 @@ expander(SCAN_ROOT_REGIONS,, "Concurrent Scan Root Regions") \ expander(CONCURRENT_MARK,, "Concurrent Mark") \ expander(MARK_FROM_ROOTS,, "Concurrent Mark From Roots") \ + expander(PRECLEAN,, "Concurrent Preclean") \ expander(BEFORE_REMARK,, NULL) \ expander(REMARK,, NULL) \ expander(REBUILD_REMEMBERED_SETS,, "Concurrent Rebuild Remembered Sets") \ @@ -309,7 +310,14 @@ break; } - // Provide a control point after mark_from_roots. + if (G1UseReferencePrecleaning) { + { + G1ConcPhase p(G1ConcurrentPhase::PRECLEAN, this); + _cm->preclean(); + } + } + + // Provide a control point before remark. { G1ConcPhaseManager p(G1ConcurrentPhase::BEFORE_REMARK, this); }