Mercurial > hg > graal-jvmci-8
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); |