8173335: Improve logging for j.l.ref.reference processing

Add logs for each phases of references and stats for each worker threads

Reviewed-by: tschatzl, shade
This commit is contained in:
Sangheon Kim 2017-08-10 18:09:19 -07:00
parent ebb8c32e7f
commit ebcca449a0
31 changed files with 1077 additions and 186 deletions

View file

@ -254,7 +254,11 @@ bool PSMarkSweep::invoke_no_policy(bool clear_all_softrefs) {
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 @@ void PSMarkSweep::mark_sweep_phase1(bool clear_all_softrefs) {
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.