comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @ 3979:4dfb2df418f2

6484982: G1: process references during evacuation pauses Summary: G1 now uses two reference processors - one is used by concurrent marking and the other is used by STW GCs (both full and incremental evacuation pauses). In an evacuation pause, the reference processor is embedded into the closures used to scan objects. Doing so causes causes reference objects to be 'discovered' by the reference processor. At the end of the evacuation pause, these discovered reference objects are processed - preserving (and copying) referent objects (and their reachable graphs) as appropriate. Reviewed-by: ysr, jwilhelm, brutisso, stefank, tonyp
author johnc
date Thu, 22 Sep 2011 10:57:37 -0700
parents d912b598c6c3
children 273b46400613
comparison
equal deleted inserted replaced
3978:f0ecbe78fc7b 3979:4dfb2df418f2
150 150
151 _all_mod_union_times_ms(new NumberSeq()), 151 _all_mod_union_times_ms(new NumberSeq()),
152 152
153 _summary(new Summary()), 153 _summary(new Summary()),
154 154
155 _cur_clear_ct_time_ms(0.0),
156
157 _cur_ref_proc_time_ms(0.0),
158 _cur_ref_enq_time_ms(0.0),
159
155 #ifndef PRODUCT 160 #ifndef PRODUCT
156 _cur_clear_ct_time_ms(0.0),
157 _min_clear_cc_time_ms(-1.0), 161 _min_clear_cc_time_ms(-1.0),
158 _max_clear_cc_time_ms(-1.0), 162 _max_clear_cc_time_ms(-1.0),
159 _cur_clear_cc_time_ms(0.0), 163 _cur_clear_cc_time_ms(0.0),
160 _cum_clear_cc_time_ms(0.0), 164 _cum_clear_cc_time_ms(0.0),
161 _num_cc_clears(0L), 165 _num_cc_clears(0L),
1477 print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears)); 1481 print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears));
1478 } 1482 }
1479 #endif 1483 #endif
1480 print_stats(1, "Other", other_time_ms); 1484 print_stats(1, "Other", other_time_ms);
1481 print_stats(2, "Choose CSet", _recorded_young_cset_choice_time_ms); 1485 print_stats(2, "Choose CSet", _recorded_young_cset_choice_time_ms);
1486 print_stats(2, "Ref Proc", _cur_ref_proc_time_ms);
1487 print_stats(2, "Ref Enq", _cur_ref_enq_time_ms);
1482 1488
1483 for (int i = 0; i < _aux_num; ++i) { 1489 for (int i = 0; i < _aux_num; ++i) {
1484 if (_cur_aux_times_set[i]) { 1490 if (_cur_aux_times_set[i]) {
1485 char buffer[96]; 1491 char buffer[96];
1486 sprintf(buffer, "Aux%d", i); 1492 sprintf(buffer, "Aux%d", i);