comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @ 890:6cb8e9df7174

6819077: G1: first GC thread coming late into the GC. Summary: The first worker thread is delayed when entering the GC because it clears the card count table that is used in identifying hot cards. Replace the card count table with a dynamically sized evicting hash table that includes an epoch based counter. Reviewed-by: iveresov, tonyp
author johnc
date Tue, 04 Aug 2009 16:00:17 -0700
parents df6caf649ff7
children e1fdf4fd34dc
comparison
equal deleted inserted replaced
889:15c5903cf9e1 890:6cb8e9df7174
92 _all_mod_union_times_ms(new NumberSeq()), 92 _all_mod_union_times_ms(new NumberSeq()),
93 93
94 _summary(new Summary()), 94 _summary(new Summary()),
95 _abandoned_summary(new AbandonedSummary()), 95 _abandoned_summary(new AbandonedSummary()),
96 96
97 #ifndef PRODUCT
97 _cur_clear_ct_time_ms(0.0), 98 _cur_clear_ct_time_ms(0.0),
99 _min_clear_cc_time_ms(-1.0),
100 _max_clear_cc_time_ms(-1.0),
101 _cur_clear_cc_time_ms(0.0),
102 _cum_clear_cc_time_ms(0.0),
103 _num_cc_clears(0L),
104 #endif
98 105
99 _region_num_young(0), 106 _region_num_young(0),
100 _region_num_tenured(0), 107 _region_num_tenured(0),
101 _prev_region_num_young(0), 108 _prev_region_num_young(0),
102 _prev_region_num_tenured(0), 109 _prev_region_num_tenured(0),
1646 print_stats(1, "Scan-Only Scanning", scan_only_time); 1653 print_stats(1, "Scan-Only Scanning", scan_only_time);
1647 print_stats(1, "Scan RS", scan_rs_time); 1654 print_stats(1, "Scan RS", scan_rs_time);
1648 print_stats(1, "Object Copying", obj_copy_time); 1655 print_stats(1, "Object Copying", obj_copy_time);
1649 } 1656 }
1650 } 1657 }
1658 #ifndef PRODUCT
1659 print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms);
1660 print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms);
1661 print_stats(1, "Min Clear CC", _min_clear_cc_time_ms);
1662 print_stats(1, "Max Clear CC", _max_clear_cc_time_ms);
1663 if (_num_cc_clears > 0) {
1664 print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears));
1665 }
1666 #endif
1651 print_stats(1, "Other", other_time_ms); 1667 print_stats(1, "Other", other_time_ms);
1652 for (int i = 0; i < _aux_num; ++i) { 1668 for (int i = 0; i < _aux_num; ++i) {
1653 if (_cur_aux_times_set[i]) { 1669 if (_cur_aux_times_set[i]) {
1654 char buffer[96]; 1670 char buffer[96];
1655 sprintf(buffer, "Aux%d", i); 1671 sprintf(buffer, "Aux%d", i);