3604 totals += task_queue(i)->stats;
3605 }
3606 st->print_raw("tot "); totals.print(st); st->cr();
3607
3608 DEBUG_ONLY(totals.verify());
3609 }
3610
3611 void G1CollectedHeap::reset_taskqueue_stats() {
3612 const uint n = num_task_queues();
3613 for (uint i = 0; i < n; ++i) {
3614 task_queue(i)->stats.reset();
3615 }
3616 }
3617 #endif // TASKQUEUE_STATS
3618
3619 void G1CollectedHeap::log_gc_footer(double pause_time_counter) {
3620 if (evacuation_failed()) {
3621 log_info(gc)("To-space exhausted");
3622 }
3623
3624 double pause_time_sec = TimeHelper::counter_to_seconds(pause_time_counter);
3625 g1_policy()->print_phases(pause_time_sec);
3626
3627 g1_policy()->print_detailed_heap_transition();
3628 }
3629
3630
3631 void G1CollectedHeap::wait_for_root_region_scanning() {
3632 double scan_wait_start = os::elapsedTime();
3633 // We have to wait until the CM threads finish scanning the
3634 // root regions as it's the only way to ensure that all the
3635 // objects on them have been correctly scanned before we start
3636 // moving them during the GC.
3637 bool waited = _cm->root_regions()->wait_until_scan_finished();
3638 double wait_time_ms = 0.0;
3639 if (waited) {
3640 double scan_wait_end = os::elapsedTime();
3641 wait_time_ms = (scan_wait_end - scan_wait_start) * 1000.0;
3642 }
3643 g1_policy()->phase_times()->record_root_region_scan_wait_time(wait_time_ms);
3644 }
|
3604 totals += task_queue(i)->stats;
3605 }
3606 st->print_raw("tot "); totals.print(st); st->cr();
3607
3608 DEBUG_ONLY(totals.verify());
3609 }
3610
3611 void G1CollectedHeap::reset_taskqueue_stats() {
3612 const uint n = num_task_queues();
3613 for (uint i = 0; i < n; ++i) {
3614 task_queue(i)->stats.reset();
3615 }
3616 }
3617 #endif // TASKQUEUE_STATS
3618
3619 void G1CollectedHeap::log_gc_footer(double pause_time_counter) {
3620 if (evacuation_failed()) {
3621 log_info(gc)("To-space exhausted");
3622 }
3623
3624 double pause_time_sec = TimeHelper::counter_to_seconds((jlong)pause_time_counter);
3625 g1_policy()->print_phases(pause_time_sec);
3626
3627 g1_policy()->print_detailed_heap_transition();
3628 }
3629
3630
3631 void G1CollectedHeap::wait_for_root_region_scanning() {
3632 double scan_wait_start = os::elapsedTime();
3633 // We have to wait until the CM threads finish scanning the
3634 // root regions as it's the only way to ensure that all the
3635 // objects on them have been correctly scanned before we start
3636 // moving them during the GC.
3637 bool waited = _cm->root_regions()->wait_until_scan_finished();
3638 double wait_time_ms = 0.0;
3639 if (waited) {
3640 double scan_wait_end = os::elapsedTime();
3641 wait_time_ms = (scan_wait_end - scan_wait_start) * 1000.0;
3642 }
3643 g1_policy()->phase_times()->record_root_region_scan_wait_time(wait_time_ms);
3644 }
|