Up Top

Serviceability 機能 : JVMTI の処理 : JVMTI 関数の処理 : Raw モニター (Raw Monitor) : CreateRawMonitor(), DestroyRawMonitor(), RawMonitorEnter(), RawMonitorExit(), RawMonitorWait(), RawMonitorNotify(), RawMonitorNotifyAll() の処理


概要(Summary)

(See: JVMTI 仕様)

備考(Notes)

まだ JavaThread ができていない状態 (HotSpot が起動中の段階) で RawMonitor が使用された場合のために, JvmtiPendingMonitors というクラスが用意されている.

起動中にロックされた RawMonitor は JvmtiPendingMonitors クラス内で管理され, 起動処理の終了後にメインスレッドを表す JavaThread へと引き継がれる.

処理の流れ (概要)(Execution Flows : Summary)

* 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()

処理の流れ (詳細)(Execution Flows : Details)

JvmtiEnv::CreateRawMonitor()

See: here for details

JvmtiRawMonitor::JvmtiRawMonitor()

See: here for details

JvmtiEnv::DestroyRawMonitor()

See: here for details

JvmtiPendingMonitors::destroy()

See: here for details

JvmtiRawMonitor::~JvmtiRawMonitor()

See: here for details

JvmtiEnv::RawMonitorEnter()

See: here for details

JvmtiPendingMonitors::enter()

See: here for details

JvmtiRawMonitor::raw_enter()

(#Under Construction) See: here for details

JvmtiRawMonitor::SimpleEnter()

(#Under Construction)

JvmtiEnv::RawMonitorExit()

See: here for details

JvmtiPendingMonitors::exit()

See: here for details

JvmtiRawMonitor::raw_exit()

See: here for details

JvmtiRawMonitor::SimpleExit()

See: here for details

JvmtiEnv::RawMonitorWait()

See: here for details

JvmtiRawMonitor::raw_wait()

(#Under Construction) See: here for details

JvmtiRawMonitor::SimpleWait()

(#Under Construction)

JvmtiEnv::RawMonitorNotify()

See: here for details

JvmtiRawMonitor::raw_notify()

See: here for details

JvmtiRawMonitor::SimpleNotify()

See: here for details

JvmtiEnv::RawMonitorNotifyAll()

See: here for details

JvmtiRawMonitor::raw_notifyAll()

See: here for details

JvmtiExport::transition_pending_onload_raw_monitors()

See: here for details

JvmtiPendingMonitors::transition_raw_monitors()

See: here for details


This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.