133 };
134
135 G1CollectorPolicy::G1CollectorPolicy() :
136 _parallel_gc_threads(G1CollectedHeap::use_parallel_gc_threads()
137 ? ParallelGCThreads : 1),
138
139 _n_pauses(0),
140 _recent_rs_scan_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
141 _recent_pause_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
142 _recent_rs_sizes(new TruncatedSeq(NumPrevPausesForHeuristics)),
143 _recent_gc_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
144 _all_pause_times_ms(new NumberSeq()),
145 _stop_world_start(0.0),
146 _all_stop_world_times_ms(new NumberSeq()),
147 _all_yield_times_ms(new NumberSeq()),
148
149 _all_mod_union_times_ms(new NumberSeq()),
150
151 _summary(new Summary()),
152
153 #ifndef PRODUCT
154 _cur_clear_ct_time_ms(0.0),
155 _min_clear_cc_time_ms(-1.0),
156 _max_clear_cc_time_ms(-1.0),
157 _cur_clear_cc_time_ms(0.0),
158 _cum_clear_cc_time_ms(0.0),
159 _num_cc_clears(0L),
160 #endif
161
162 _region_num_young(0),
163 _region_num_tenured(0),
164 _prev_region_num_young(0),
165 _prev_region_num_tenured(0),
166
167 _aux_num(10),
168 _all_aux_times_ms(new NumberSeq[_aux_num]),
169 _cur_aux_start_times_ms(new double[_aux_num]),
170 _cur_aux_times_ms(new double[_aux_num]),
171 _cur_aux_times_set(new bool[_aux_num]),
172
173 _concurrent_mark_init_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
174 _concurrent_mark_remark_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
1412 } else {
1413 print_stats(1, "Update RS", update_rs_time);
1414 print_stats(2, "Processed Buffers",
1415 (int)update_rs_processed_buffers);
1416 print_stats(1, "Ext Root Scanning", ext_root_scan_time);
1417 print_stats(1, "Mark Stack Scanning", mark_stack_scan_time);
1418 print_stats(1, "Scan RS", scan_rs_time);
1419 print_stats(1, "Object Copying", obj_copy_time);
1420 }
1421 #ifndef PRODUCT
1422 print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms);
1423 print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms);
1424 print_stats(1, "Min Clear CC", _min_clear_cc_time_ms);
1425 print_stats(1, "Max Clear CC", _max_clear_cc_time_ms);
1426 if (_num_cc_clears > 0) {
1427 print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears));
1428 }
1429 #endif
1430 print_stats(1, "Other", other_time_ms);
1431 print_stats(2, "Choose CSet", _recorded_young_cset_choice_time_ms);
1432
1433 for (int i = 0; i < _aux_num; ++i) {
1434 if (_cur_aux_times_set[i]) {
1435 char buffer[96];
1436 sprintf(buffer, "Aux%d", i);
1437 print_stats(1, buffer, _cur_aux_times_ms[i]);
1438 }
1439 }
1440 }
1441
1442 _all_pause_times_ms->add(elapsed_ms);
1443 if (update_stats) {
1444 summary->record_total_time_ms(elapsed_ms);
1445 summary->record_other_time_ms(other_time_ms);
1446 }
1447 for (int i = 0; i < _aux_num; ++i)
1448 if (_cur_aux_times_set[i])
1449 _all_aux_times_ms[i].add(_cur_aux_times_ms[i]);
1450
1451 // Reset marks-between-pauses counter.
|
133 };
134
135 G1CollectorPolicy::G1CollectorPolicy() :
136 _parallel_gc_threads(G1CollectedHeap::use_parallel_gc_threads()
137 ? ParallelGCThreads : 1),
138
139 _n_pauses(0),
140 _recent_rs_scan_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
141 _recent_pause_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
142 _recent_rs_sizes(new TruncatedSeq(NumPrevPausesForHeuristics)),
143 _recent_gc_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
144 _all_pause_times_ms(new NumberSeq()),
145 _stop_world_start(0.0),
146 _all_stop_world_times_ms(new NumberSeq()),
147 _all_yield_times_ms(new NumberSeq()),
148
149 _all_mod_union_times_ms(new NumberSeq()),
150
151 _summary(new Summary()),
152
153 _cur_clear_ct_time_ms(0.0),
154
155 _cur_ref_proc_time_ms(0.0),
156 _cur_ref_enq_time_ms(0.0),
157
158 #ifndef PRODUCT
159 _min_clear_cc_time_ms(-1.0),
160 _max_clear_cc_time_ms(-1.0),
161 _cur_clear_cc_time_ms(0.0),
162 _cum_clear_cc_time_ms(0.0),
163 _num_cc_clears(0L),
164 #endif
165
166 _region_num_young(0),
167 _region_num_tenured(0),
168 _prev_region_num_young(0),
169 _prev_region_num_tenured(0),
170
171 _aux_num(10),
172 _all_aux_times_ms(new NumberSeq[_aux_num]),
173 _cur_aux_start_times_ms(new double[_aux_num]),
174 _cur_aux_times_ms(new double[_aux_num]),
175 _cur_aux_times_set(new bool[_aux_num]),
176
177 _concurrent_mark_init_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
178 _concurrent_mark_remark_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
1416 } else {
1417 print_stats(1, "Update RS", update_rs_time);
1418 print_stats(2, "Processed Buffers",
1419 (int)update_rs_processed_buffers);
1420 print_stats(1, "Ext Root Scanning", ext_root_scan_time);
1421 print_stats(1, "Mark Stack Scanning", mark_stack_scan_time);
1422 print_stats(1, "Scan RS", scan_rs_time);
1423 print_stats(1, "Object Copying", obj_copy_time);
1424 }
1425 #ifndef PRODUCT
1426 print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms);
1427 print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms);
1428 print_stats(1, "Min Clear CC", _min_clear_cc_time_ms);
1429 print_stats(1, "Max Clear CC", _max_clear_cc_time_ms);
1430 if (_num_cc_clears > 0) {
1431 print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears));
1432 }
1433 #endif
1434 print_stats(1, "Other", other_time_ms);
1435 print_stats(2, "Choose CSet", _recorded_young_cset_choice_time_ms);
1436 print_stats(2, "Ref Proc", _cur_ref_proc_time_ms);
1437 print_stats(2, "Ref Enq", _cur_ref_enq_time_ms);
1438
1439 for (int i = 0; i < _aux_num; ++i) {
1440 if (_cur_aux_times_set[i]) {
1441 char buffer[96];
1442 sprintf(buffer, "Aux%d", i);
1443 print_stats(1, buffer, _cur_aux_times_ms[i]);
1444 }
1445 }
1446 }
1447
1448 _all_pause_times_ms->add(elapsed_ms);
1449 if (update_stats) {
1450 summary->record_total_time_ms(elapsed_ms);
1451 summary->record_other_time_ms(other_time_ms);
1452 }
1453 for (int i = 0; i < _aux_num; ++i)
1454 if (_cur_aux_times_set[i])
1455 _all_aux_times_ms[i].add(_cur_aux_times_ms[i]);
1456
1457 // Reset marks-between-pauses counter.
|