Mercurial > hg > truffle
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); |