Up Top

同期排他処理 : 初期化処理 : biased locking 用の初期化処理


概要(Summary)

Biased Locking 機能は HotSpot の起動時に初期化される. この初期化処理では以下の 2つの処理が行われる.

これらの処理は VM_EnableBiasedLocking クラスで行われる.

ただし, BiasedLocking を起動直後から有効にしておくと, 起動時に大量の revoke が発生して遅くなる恐れがある. このため, ある程度時間が経過してから有効化できるようになっている. この時間は BiasedLockingStartupDelay オプションで調整できる.

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

HotSpot 起動時の初期化処理

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

上記の初期化処理で登録された EnableBiasedLockingTask の処理

WatcherThread::run()
-> (See: here for details)
   -> EnableBiasedLockingTask::task()
      -> VMThread::execute()
         -> (See: here for details)
            -> VM_EnableBiasedLocking::doit()

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

BiasedLocking::init()

See: here for details

EnableBiasedLockingTask::EnableBiasedLockingTask()

See: here for details

PeriodicTask::enroll()

See: here for details

EnableBiasedLockingTask::task()

See: here for details

VM_EnableBiasedLocking::doit()

See: here for details

enable_biased_locking()

See: here for details

BiasedLocking::enabled()

See: here for details


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