--- old/src/share/vm/gc/parallel/psMarkSweep.cpp 2017-08-03 16:11:37.533642075 -0700 +++ new/src/share/vm/gc/parallel/psMarkSweep.cpp 2017-08-03 16:11:37.389642080 -0700 @@ -254,7 +254,11 @@ DerivedPointerTable::update_pointers(); #endif - ref_processor()->enqueue_discovered_references(NULL); + ReferenceProcessorPhaseTimes pt(_gc_timer, ref_processor()->num_q()); + + ref_processor()->enqueue_discovered_references(NULL, &pt); + + pt.print_enqueue_phase(); // Update time of last GC reset_millis_since_last_gc(); @@ -528,10 +532,12 @@ GCTraceTime(Debug, gc, phases) t("Reference Processing", _gc_timer); ref_processor()->setup_policy(clear_all_softrefs); + ReferenceProcessorPhaseTimes pt(_gc_timer, ref_processor()->num_q()); const ReferenceProcessorStats& stats = ref_processor()->process_discovered_references( - is_alive_closure(), mark_and_push_closure(), follow_stack_closure(), NULL, _gc_timer); + is_alive_closure(), mark_and_push_closure(), follow_stack_closure(), NULL, &pt); gc_tracer()->report_gc_reference_stats(stats); + pt.print_all_references(); } // This is the point where the entire marking should have completed.