hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
// We take a break if someone is trying to stop the world.
bool ConcurrentMark::do_yield_check(int worker_i) {
{- -------------------------------------------
(1) もし他のスレッドから停止するように要求が来ていれば
(= ConcurrentMark::should_yield() が true であれば),
ConcurrentMarkThread::yield() を呼び出して待機する.
(なお, 待機処理の前後で G1CollectorPolicy::record_concurrent_pause() と
G1CollectorPolicy::record_concurrent_pause_end() を呼び出して,
トレース出力用の情報の収集も行っている.)
---------------------------------------- -}
if (should_yield()) {
if (worker_i == 0)
_g1h->g1_policy()->record_concurrent_pause();
cmThread()->yield();
if (worker_i == 0)
_g1h->g1_policy()->record_concurrent_pause_end();
return true;
} else {
return false;
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.