hotspot/src/share/vm/runtime/thread.cpp
void JavaThread::block_if_vm_exited() {
{- -------------------------------------------
(1) もしスレッドの終了原因が「HotSpot の終了処理が開始された」ことによるものだった場合は,
ここで永久的にブロックする.
(終了処理が始まっていると, _terminated フィールドが _vm_exited になる.
See: VM_Exit::set_vm_exited())
(なおブロック処理は, Monitor::lock_without_safepoint_check() を
Threads_lock に対して呼び出すことで行う.
終了処理で Threads_lock を取りっぱなしにしているはずなので, この確保処理は二度と起きてこない.)
---------------------------------------- -}
if (_terminated == _vm_exited) {
// _vm_exited is set at safepoint, and Threads_lock is never released
// we will block here forever
Threads_lock->lock_without_safepoint_check();
ShouldNotReachHere();
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.