Top


定義場所(file name)

hotspot/src/share/vm/runtime/safepoint.cpp

説明(description)

// Various cleaning tasks that should be done periodically at safepoints

名前(function name)

void SafepointSynchronize::do_cleanup_tasks() {

本体部(body)

  {- -------------------------------------------
  (1) ObjectSynchronizer::deflate_idle_monitors() を呼んで, 
      不要になった ObjectMonitor オブジェクトを回収する.

      (なお, ここで回収されるのは以下の条件を満たす ObjectMonitor.
       * ロックを取られていない
       * ロック待ちのスレッドもいない
       * notifyを待っているスレッドもいない)

      (ついでに(トレース出力)も出している)
      ---------------------------------------- -}

      {
        TraceTime t1("deflating idle monitors", TraceSafepointCleanupTime);
        ObjectSynchronizer::deflate_idle_monitors();
      }

  {- -------------------------------------------
  (1) 

      (ついでに(トレース出力)も出している)
      ---------------------------------------- -}

      {
        TraceTime t2("updating inline caches", TraceSafepointCleanupTime);
        InlineCacheBuffer::update_inline_caches();
      }

  {- -------------------------------------------
  (1) CompilationPolicy::do_safepoint_work() を呼び出して
      (より正確に言うと, それを各サブクラスがオーバーライドしたものを呼び出して), 
      CompilationPolicy 関係の safepoint 時処理を行っておく.

      (<= といっても現状では NonTieredCompPolicy 以外では何もしない.
       NonTieredCompPolicy の場合には, InvocationCounter の値を半減させていく処理が行われる.
       (See: NonTieredCompPolicy::do_safepoint_work()))

      (ついでに(トレース出力)も出している)
      ---------------------------------------- -}

      {
        TraceTime t3("compilation policy safepoint handler", TraceSafepointCleanupTime);
        CompilationPolicy::policy()->do_safepoint_work();
      }

  {- -------------------------------------------
  (1) NMethodSweeper::scan_stacks() を呼んで, 
      不要になった JIT 生成コード(nmethod)の回収処理を行う
      (See: NMethodSweeper).

      (ついでに(トレース出力)も出している)
      ---------------------------------------- -}

      TraceTime t4("sweeping nmethods", TraceSafepointCleanupTime);
      NMethodSweeper::scan_stacks();
    }

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