hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
void
G1CollectedHeap::doConcurrentMark() {
{- -------------------------------------------
(1) (ConcurrentMarkThread::set_started() を呼んで
ConcurrentMarkThread::_started フィールドを true にした後)
CGC_lock に対して Monitor::notify() を呼んで ConcurrentMarkThread スレッドを起床させる.
(See: ConcurrentMarkThread::sleepBeforeNextCycle())
(ただし, 今現在 ConcurrentMarkThread が処理を行っている途中であれば
(= ConcurrentMarkThread::in_progress() が true であれば), 何もしない)
(なお, これらの操作は CGC_lock で排他した状態で行う)
---------------------------------------- -}
MutexLockerEx x(CGC_lock, Mutex::_no_safepoint_check_flag);
if (!_cmThread->in_progress()) {
_cmThread->set_started();
CGC_lock->notify();
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.