src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp

Print this page
rev 5920 : 8035406: Improve data structure for Code Cache remembered sets
Summary: Change the code cache remembered sets data structure from a GrowableArray to a chunked list of nmethods. This makes the data structure more amenable to parallelization, and decreases freeing time.
Reviewed-by:
rev 5921 : 8027295: Free CSet takes ~50% of young pause time
Summary: Improve fast card cache iteration and avoid taking locks when freeing the collection set.
Reviewed-by:


 300     _last_strong_code_root_scan_times_ms.print(1, "Code Root Scanning (ms)");
 301     _last_obj_copy_times_ms.print(1, "Object Copy (ms)");
 302   }
 303   print_stats(1, "Code Root Fixup", _cur_collection_code_root_fixup_time_ms);
 304   print_stats(1, "Code Root Migration", _cur_strong_code_root_migration_time_ms);
 305   print_stats(1, "Code Root Purge", _cur_strong_code_root_purge_time_ms);
 306   print_stats(1, "Clear CT", _cur_clear_ct_time_ms);
 307   double misc_time_ms = pause_time_sec * MILLIUNITS - accounted_time_ms();
 308   print_stats(1, "Other", misc_time_ms);
 309   if (_cur_verify_before_time_ms > 0.0) {
 310     print_stats(2, "Verify Before", _cur_verify_before_time_ms);
 311   }
 312   print_stats(2, "Choose CSet",
 313     (_recorded_young_cset_choice_time_ms +
 314     _recorded_non_young_cset_choice_time_ms));
 315   print_stats(2, "Ref Proc", _cur_ref_proc_time_ms);
 316   print_stats(2, "Ref Enq", _cur_ref_enq_time_ms);
 317   print_stats(2, "Free CSet",
 318     (_recorded_young_free_cset_time_ms +
 319     _recorded_non_young_free_cset_time_ms));




 320   if (_cur_verify_after_time_ms > 0.0) {
 321     print_stats(2, "Verify After", _cur_verify_after_time_ms);
 322   }
 323 }


 300     _last_strong_code_root_scan_times_ms.print(1, "Code Root Scanning (ms)");
 301     _last_obj_copy_times_ms.print(1, "Object Copy (ms)");
 302   }
 303   print_stats(1, "Code Root Fixup", _cur_collection_code_root_fixup_time_ms);
 304   print_stats(1, "Code Root Migration", _cur_strong_code_root_migration_time_ms);
 305   print_stats(1, "Code Root Purge", _cur_strong_code_root_purge_time_ms);
 306   print_stats(1, "Clear CT", _cur_clear_ct_time_ms);
 307   double misc_time_ms = pause_time_sec * MILLIUNITS - accounted_time_ms();
 308   print_stats(1, "Other", misc_time_ms);
 309   if (_cur_verify_before_time_ms > 0.0) {
 310     print_stats(2, "Verify Before", _cur_verify_before_time_ms);
 311   }
 312   print_stats(2, "Choose CSet",
 313     (_recorded_young_cset_choice_time_ms +
 314     _recorded_non_young_cset_choice_time_ms));
 315   print_stats(2, "Ref Proc", _cur_ref_proc_time_ms);
 316   print_stats(2, "Ref Enq", _cur_ref_enq_time_ms);
 317   print_stats(2, "Free CSet",
 318     (_recorded_young_free_cset_time_ms +
 319     _recorded_non_young_free_cset_time_ms));
 320   if (G1Log::finest()) {
 321     print_stats(3, "Young Free CSet", _recorded_young_free_cset_time_ms);
 322     print_stats(3, "Non-Young Free CSet", _recorded_non_young_free_cset_time_ms);
 323   }
 324   if (_cur_verify_after_time_ms > 0.0) {
 325     print_stats(2, "Verify After", _cur_verify_after_time_ms);
 326   }
 327 }