--- old/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp 2019-11-26 16:18:13.210857026 +0100 +++ new/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp 2019-11-26 16:18:12.790854944 +0100 @@ -155,8 +155,10 @@ _redirtied_cards = new WorkerDataArray(max_gc_threads, "Redirtied Cards:"); _gc_par_phases[RedirtyCards]->link_thread_work_items(_redirtied_cards); + _gc_par_phases[ParFreeCSet] = new WorkerDataArray(max_gc_threads, "Parallel Free Collection Set (ms):"); _gc_par_phases[YoungFreeCSet] = new WorkerDataArray(max_gc_threads, "Young Free Collection Set (ms):"); _gc_par_phases[NonYoungFreeCSet] = new WorkerDataArray(max_gc_threads, "Non-Young Free Collection Set (ms):"); + _gc_par_phases[RebuildFreeList] = new WorkerDataArray(max_gc_threads, "Parallel Rebuild Free List (ms):"); reset(); } @@ -191,6 +193,8 @@ _recorded_start_new_cset_time_ms = 0.0; _recorded_total_free_cset_time_ms = 0.0; _recorded_serial_free_cset_time_ms = 0.0; + _recorded_total_rebuild_freelist_time_ms = 0.0; + _recorded_serial_rebuild_freelist_time_ms = 0.0; _cur_fast_reclaim_humongous_time_ms = 0.0; _cur_region_register_time = 0.0; _cur_fast_reclaim_humongous_total = 0; @@ -474,6 +478,7 @@ _cur_strong_code_root_purge_time_ms + _recorded_redirty_logged_cards_time_ms + _recorded_total_free_cset_time_ms + + _recorded_total_rebuild_freelist_time_ms + _cur_fast_reclaim_humongous_time_ms + _cur_expand_heap_time_ms + _cur_string_deduplication_time_ms; @@ -510,10 +515,15 @@ #endif debug_time("Free Collection Set", _recorded_total_free_cset_time_ms); - trace_time("Free Collection Set Serial", _recorded_serial_free_cset_time_ms); + trace_time("Serial Free Collection Set", _recorded_serial_free_cset_time_ms); + trace_phase(_gc_par_phases[ParFreeCSet]); trace_phase(_gc_par_phases[YoungFreeCSet]); trace_phase(_gc_par_phases[NonYoungFreeCSet]); + debug_time("Rebuild Free List", _recorded_total_rebuild_freelist_time_ms); + trace_time("Serial Rebuild Free List ", _recorded_serial_rebuild_freelist_time_ms); + trace_phase(_gc_par_phases[RebuildFreeList]); + if (G1EagerReclaimHumongousObjects) { debug_time("Humongous Reclaim", _cur_fast_reclaim_humongous_time_ms); trace_count("Humongous Reclaimed", _cur_fast_reclaim_humongous_reclaimed); @@ -584,8 +594,10 @@ "StringDedupQueueFixup", "StringDedupTableFixup", "RedirtyCards", + "ParFreeCSet", "YoungFreeCSet", "NonYoungFreeCSet", + "RebuildFreeList", "MergePSS" //GCParPhasesSentinel only used to tell end of enum };