135
136 G1CollectorPolicy::G1CollectorPolicy() :
137 _parallel_gc_threads(G1CollectedHeap::use_parallel_gc_threads()
138 ? ParallelGCThreads : 1),
139
140 _n_pauses(0),
141 _recent_rs_scan_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
142 _recent_pause_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
143 _recent_rs_sizes(new TruncatedSeq(NumPrevPausesForHeuristics)),
144 _recent_gc_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
145 _all_pause_times_ms(new NumberSeq()),
146 _stop_world_start(0.0),
147 _all_stop_world_times_ms(new NumberSeq()),
148 _all_yield_times_ms(new NumberSeq()),
149 _using_new_ratio_calculations(false),
150
151 _all_mod_union_times_ms(new NumberSeq()),
152
153 _summary(new Summary()),
154
155 #ifndef PRODUCT
156 _cur_clear_ct_time_ms(0.0),
157 _min_clear_cc_time_ms(-1.0),
158 _max_clear_cc_time_ms(-1.0),
159 _cur_clear_cc_time_ms(0.0),
160 _cum_clear_cc_time_ms(0.0),
161 _num_cc_clears(0L),
162 #endif
163
164 _region_num_young(0),
165 _region_num_tenured(0),
166 _prev_region_num_young(0),
167 _prev_region_num_tenured(0),
168
169 _aux_num(10),
170 _all_aux_times_ms(new NumberSeq[_aux_num]),
171 _cur_aux_start_times_ms(new double[_aux_num]),
172 _cur_aux_times_ms(new double[_aux_num]),
173 _cur_aux_times_set(new bool[_aux_num]),
174
175 _concurrent_mark_remark_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
176 _concurrent_mark_cleanup_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
1462 } else {
1463 print_stats(1, "Update RS", update_rs_time);
1464 print_stats(2, "Processed Buffers",
1465 (int)update_rs_processed_buffers);
1466 print_stats(1, "Ext Root Scanning", ext_root_scan_time);
1467 print_stats(1, "Mark Stack Scanning", mark_stack_scan_time);
1468 print_stats(1, "Scan RS", scan_rs_time);
1469 print_stats(1, "Object Copying", obj_copy_time);
1470 }
1471 #ifndef PRODUCT
1472 print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms);
1473 print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms);
1474 print_stats(1, "Min Clear CC", _min_clear_cc_time_ms);
1475 print_stats(1, "Max Clear CC", _max_clear_cc_time_ms);
1476 if (_num_cc_clears > 0) {
1477 print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears));
1478 }
1479 #endif
1480 print_stats(1, "Other", other_time_ms);
1481 print_stats(2, "Choose CSet", _recorded_young_cset_choice_time_ms);
1482
1483 for (int i = 0; i < _aux_num; ++i) {
1484 if (_cur_aux_times_set[i]) {
1485 char buffer[96];
1486 sprintf(buffer, "Aux%d", i);
1487 print_stats(1, buffer, _cur_aux_times_ms[i]);
1488 }
1489 }
1490 }
1491
1492 _all_pause_times_ms->add(elapsed_ms);
1493 if (update_stats) {
1494 summary->record_total_time_ms(elapsed_ms);
1495 summary->record_other_time_ms(other_time_ms);
1496 }
1497 for (int i = 0; i < _aux_num; ++i)
1498 if (_cur_aux_times_set[i])
1499 _all_aux_times_ms[i].add(_cur_aux_times_ms[i]);
1500
1501 // Reset marks-between-pauses counter.
|
135
136 G1CollectorPolicy::G1CollectorPolicy() :
137 _parallel_gc_threads(G1CollectedHeap::use_parallel_gc_threads()
138 ? ParallelGCThreads : 1),
139
140 _n_pauses(0),
141 _recent_rs_scan_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
142 _recent_pause_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
143 _recent_rs_sizes(new TruncatedSeq(NumPrevPausesForHeuristics)),
144 _recent_gc_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
145 _all_pause_times_ms(new NumberSeq()),
146 _stop_world_start(0.0),
147 _all_stop_world_times_ms(new NumberSeq()),
148 _all_yield_times_ms(new NumberSeq()),
149 _using_new_ratio_calculations(false),
150
151 _all_mod_union_times_ms(new NumberSeq()),
152
153 _summary(new Summary()),
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
160 #ifndef PRODUCT
161 _min_clear_cc_time_ms(-1.0),
162 _max_clear_cc_time_ms(-1.0),
163 _cur_clear_cc_time_ms(0.0),
164 _cum_clear_cc_time_ms(0.0),
165 _num_cc_clears(0L),
166 #endif
167
168 _region_num_young(0),
169 _region_num_tenured(0),
170 _prev_region_num_young(0),
171 _prev_region_num_tenured(0),
172
173 _aux_num(10),
174 _all_aux_times_ms(new NumberSeq[_aux_num]),
175 _cur_aux_start_times_ms(new double[_aux_num]),
176 _cur_aux_times_ms(new double[_aux_num]),
177 _cur_aux_times_set(new bool[_aux_num]),
178
179 _concurrent_mark_remark_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
180 _concurrent_mark_cleanup_times_ms(new TruncatedSeq(NumPrevPausesForHeuristics)),
1466 } else {
1467 print_stats(1, "Update RS", update_rs_time);
1468 print_stats(2, "Processed Buffers",
1469 (int)update_rs_processed_buffers);
1470 print_stats(1, "Ext Root Scanning", ext_root_scan_time);
1471 print_stats(1, "Mark Stack Scanning", mark_stack_scan_time);
1472 print_stats(1, "Scan RS", scan_rs_time);
1473 print_stats(1, "Object Copying", obj_copy_time);
1474 }
1475 #ifndef PRODUCT
1476 print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms);
1477 print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms);
1478 print_stats(1, "Min Clear CC", _min_clear_cc_time_ms);
1479 print_stats(1, "Max Clear CC", _max_clear_cc_time_ms);
1480 if (_num_cc_clears > 0) {
1481 print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears));
1482 }
1483 #endif
1484 print_stats(1, "Other", other_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);
1488
1489 for (int i = 0; i < _aux_num; ++i) {
1490 if (_cur_aux_times_set[i]) {
1491 char buffer[96];
1492 sprintf(buffer, "Aux%d", i);
1493 print_stats(1, buffer, _cur_aux_times_ms[i]);
1494 }
1495 }
1496 }
1497
1498 _all_pause_times_ms->add(elapsed_ms);
1499 if (update_stats) {
1500 summary->record_total_time_ms(elapsed_ms);
1501 summary->record_other_time_ms(other_time_ms);
1502 }
1503 for (int i = 0; i < _aux_num; ++i)
1504 if (_cur_aux_times_set[i])
1505 _all_aux_times_ms[i].add(_cur_aux_times_ms[i]);
1506
1507 // Reset marks-between-pauses counter.
|