1637 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_parallel_workers);
1638 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_conc_mark);
1639 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_conc_refine);
1640 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_conc_refine_control);
1641 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_service);
1642
1643 G1InitLogger::print();
1644
1645 FullGCForwarding::initialize(_reserved);
1646
1647 return JNI_OK;
1648 }
1649
1650 void G1CollectedHeap::stop() {
1651 assert_not_at_safepoint();
1652 // Stop all concurrent threads. We do this to make sure these threads
1653 // do not continue to execute and access resources (e.g. logging)
1654 // that are destroyed during shutdown.
1655 _cr->stop();
1656 _service_thread->stop();
1657 _cm->stop();
1658 }
1659
1660 void G1CollectedHeap::safepoint_synchronize_begin() {
1661 SuspendibleThreadSet::synchronize();
1662
1663 _last_synchronized_start = os::elapsed_counter();
1664 }
1665
1666 void G1CollectedHeap::safepoint_synchronize_end() {
1667 jlong now = os::elapsed_counter();
1668 jlong synchronize_duration = now - _last_synchronized_start;
1669
1670 if (_last_safepoint_refinement_epoch == _refinement_epoch) {
1671 _yield_duration_in_refinement_epoch += synchronize_duration;
1672 } else {
1673 _last_refinement_epoch_start = now;
1674 _last_safepoint_refinement_epoch = _refinement_epoch;
1675 _yield_duration_in_refinement_epoch = 0;
1676 }
|
1637 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_parallel_workers);
1638 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_conc_mark);
1639 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_conc_refine);
1640 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_conc_refine_control);
1641 CPUTimeCounters::create_counter(CPUTimeGroups::CPUTimeType::gc_service);
1642
1643 G1InitLogger::print();
1644
1645 FullGCForwarding::initialize(_reserved);
1646
1647 return JNI_OK;
1648 }
1649
1650 void G1CollectedHeap::stop() {
1651 assert_not_at_safepoint();
1652 // Stop all concurrent threads. We do this to make sure these threads
1653 // do not continue to execute and access resources (e.g. logging)
1654 // that are destroyed during shutdown.
1655 _cr->stop();
1656 _service_thread->stop();
1657 VM_G1StopMarking op;
1658 VMThread::execute(&op);
1659
1660 _cm->stop();
1661 }
1662
1663 void G1CollectedHeap::safepoint_synchronize_begin() {
1664 SuspendibleThreadSet::synchronize();
1665
1666 _last_synchronized_start = os::elapsed_counter();
1667 }
1668
1669 void G1CollectedHeap::safepoint_synchronize_end() {
1670 jlong now = os::elapsed_counter();
1671 jlong synchronize_duration = now - _last_synchronized_start;
1672
1673 if (_last_safepoint_refinement_epoch == _refinement_epoch) {
1674 _yield_duration_in_refinement_epoch += synchronize_duration;
1675 } else {
1676 _last_refinement_epoch_start = now;
1677 _last_safepoint_refinement_epoch = _refinement_epoch;
1678 _yield_duration_in_refinement_epoch = 0;
1679 }
|