(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.