(See: JVMTI 仕様)
まだ JavaThread ができていない状態 (HotSpot が起動中の段階) で RawMonitor が使用された場合のために, JvmtiPendingMonitors というクラスが用意されている.
起動中にロックされた RawMonitor は JvmtiPendingMonitors クラス内で管理され, 起動処理の終了後にメインスレッドを表す JavaThread へと引き継がれる.
* JvmtiEnv::CreateRawMonitor() の処理 JvmtiEnv::CreateRawMonitor() -> JvmtiRawMonitor::JvmtiRawMonitor() * JvmtiEnv::DestroyRawMonitor() の処理 JvmtiEnv::DestroyRawMonitor() -> JvmtiPendingMonitors::destroy() (<= HotSpot の起動中であれば呼び出す) -> JvmtiRawMonitor::~JvmtiRawMonitor() * JvmtiEnv::RawMonitorEnter() の処理 JvmtiEnv::RawMonitorEnter() -> * HotSpot の起動中の場合: -> JvmtiPendingMonitors::enter() * 起動中ではない場合: -> JvmtiRawMonitor::raw_enter() -> JvmtiRawMonitor::SimpleEnter() * JvmtiEnv::RawMonitorExit() の処理 JvmtiEnv::RawMonitorExit() -> * HotSpot の起動中の場合: -> JvmtiPendingMonitors::exit() * 起動中ではない場合: -> JvmtiRawMonitor::raw_exit() -> JvmtiRawMonitor::SimpleExit() * JvmtiEnv::RawMonitorWait() の処理 JvmtiEnv::RawMonitorWait() -> JvmtiRawMonitor::raw_wait() -> JvmtiRawMonitor::SimpleWait() * JvmtiEnv::RawMonitorNotify() の処理 JvmtiEnv::RawMonitorNotify() -> JvmtiRawMonitor::raw_notify() -> JvmtiRawMonitor::SimpleNotify() * JvmtiEnv::RawMonitorNotifyAll() の処理 JvmtiEnv::RawMonitorNotifyAll() -> JvmtiRawMonitor::raw_notifyAll() -> JvmtiRawMonitor::SimpleNotify() * 起動処理後の引き継ぎ処理 Threads::create_vm() -> JvmtiExport::transition_pending_onload_raw_monitors() -> JvmtiPendingMonitors::transition_raw_monitors()
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
(#Under Construction) See: here for details
(#Under Construction)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
(#Under Construction) See: here for details
(#Under Construction)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.