Biased Locking 機能は HotSpot の起動時に初期化される. この初期化処理では以下の 2つの処理が行われる.
これらの処理は VM_EnableBiasedLocking クラスで行われる.
ただし, BiasedLocking を起動直後から有効にしておくと, 起動時に大量の revoke が発生して遅くなる恐れがある. このため, ある程度時間が経過してから有効化できるようになっている. この時間は BiasedLockingStartupDelay オプションで調整できる.
(HotSpot の起動時処理) (See: here for details) -> Threads::create_vm() -> BiasedLocking::init() (BiasedLockingStartupDelay オプションの値に応じて, 以下のどちらかが行われる) * BiasedLockingStartupDelay が 0 よりも大きい値の場合: (EnableBiasedLockingTask が生成され, 指定時間後に VM_EnableBiasedLocking が呼び出される) -> EnableBiasedLockingTask::EnableBiasedLockingTask() -> PeriodicTask::enroll() * そうでない場合: (この関数内で VM_EnableBiasedLocking により biased locking が有効化される) -> VMThread::execute() -> (See: here for details) -> VM_EnableBiasedLocking::doit()
WatcherThread::run() -> (See: here for details) -> EnableBiasedLockingTask::task() -> VMThread::execute() -> (See: here for details) -> VM_EnableBiasedLocking::doit()
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.