VMThread は, HotSpot の初期化時に Threads::create_vm() の中で生成される.
VMThread の作成は os::create_thread() 及び os::start_thread() で行われる. このため, 生成された VMThread スレッドは java_start() から実行が開始される (See: here for details).
java_start() から始まるスレッドの起動処理では最終的に Thread::run() が呼び出される (See: here for details). VMThread は Thread::run() をオーバーライドしているので, 実際に呼び出されるのは VMThread::run() になる. この VMThread::run() の中で実際の VM Operation の管理処理が行われる (See: here for details).
(HotSpot の起動時処理) (See: here for details) -> Threads::create_vm() -> VMThread::create() -> VMThread::VMThread() -> NamedThread::NamedThread() -> Thread::Thread() -> VMOperationQueue::VMOperationQueue() -> os::create_thread() -> (See: here for details) -> os::start_thread() -> (See: here for details)
-> java_start() -> (See: here, here and here for details) -> VMThread::run() -> (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.