< prev index next >
src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp
Print this page
@@ -153,12 +153,14 @@
_gc_par_phases[RedirtyCards] = new WorkerDataArray<double>(max_gc_threads, "Parallel Redirty (ms):");
_redirtied_cards = new WorkerDataArray<size_t>(max_gc_threads, "Redirtied Cards:");
_gc_par_phases[RedirtyCards]->link_thread_work_items(_redirtied_cards);
+ _gc_par_phases[ParFreeCSet] = new WorkerDataArray<double>(max_gc_threads, "Parallel Free Collection Set (ms):");
_gc_par_phases[YoungFreeCSet] = new WorkerDataArray<double>(max_gc_threads, "Young Free Collection Set (ms):");
_gc_par_phases[NonYoungFreeCSet] = new WorkerDataArray<double>(max_gc_threads, "Non-Young Free Collection Set (ms):");
+ _gc_par_phases[RebuildFreeList] = new WorkerDataArray<double>(max_gc_threads, "Parallel Rebuild Free List (ms):");
reset();
}
void G1GCPhaseTimes::reset() {
@@ -189,10 +191,12 @@
_recorded_redirty_logged_cards_time_ms = 0.0;
_recorded_preserve_cm_referents_time_ms = 0.0;
_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;
_cur_fast_reclaim_humongous_candidates = 0;
_cur_fast_reclaim_humongous_reclaimed = 0;
@@ -472,10 +476,11 @@
_cur_clear_ct_time_ms +
merge_pss +
_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;
info_time("Post Evacuate Collection Set", sum_ms);
@@ -508,14 +513,19 @@
#if COMPILER2_OR_JVMCI
debug_time("DerivedPointerTable Update", _cur_derived_pointer_table_update_time_ms);
#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);
}
debug_time("Start New Collection Set", _recorded_start_new_cset_time_ms);
@@ -582,12 +592,14 @@
"GCWorkerTotal",
"GCWorkerEnd",
"StringDedupQueueFixup",
"StringDedupTableFixup",
"RedirtyCards",
+ "ParFreeCSet",
"YoungFreeCSet",
"NonYoungFreeCSet",
+ "RebuildFreeList",
"MergePSS"
//GCParPhasesSentinel only used to tell end of enum
};
STATIC_ASSERT(ARRAY_SIZE(names) == G1GCPhaseTimes::GCParPhasesSentinel); // GCParPhases enum and corresponding string array should have the same "length", this tries to assert it
< prev index next >