diff --git a/src/hotspot/share/gc/g1/g1FullCollector.cpp b/src/hotspot/share/gc/g1/g1FullCollector.cpp index 430d6f327886b..81a54a9c31f32 100644 --- a/src/hotspot/share/gc/g1/g1FullCollector.cpp +++ b/src/hotspot/share/gc/g1/g1FullCollector.cpp @@ -312,6 +312,13 @@ void G1FullCollector::phase1_mark_live_objects() { reference_processor()->set_active_mt_degree(old_active_mt_degree); } + { + GCTraceTime(Debug, gc, phases) debug("Phase 1: Flush Mark Stats Cache", scope()->timer()); + for (uint i = 0; i < workers(); i++) { + marker(i)->flush_mark_stats_cache(); + } + } + // Weak oops cleanup. { GCTraceTime(Debug, gc, phases) debug("Phase 1: Weak Processing", scope()->timer()); diff --git a/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp b/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp index 209e89ae4abb1..e27439143d900 100644 --- a/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp +++ b/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp @@ -56,7 +56,6 @@ void G1FullGCMarkTask::work(uint worker_id) { // Mark stack is populated, now process and drain it. marker->complete_marking(collector()->oop_queue_set(), collector()->array_queue_set(), &_terminator); - marker->flush_mark_stats_cache(); // This is the point where the entire marking should have completed. assert(marker->oop_stack()->is_empty(), "Marking should have completed");