Top


定義場所(file name)

hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp

名前(function name)

void ThreadLocalAllocBuffer::accumulate_statistics_before_gc() {

本体部(body)

  {- -------------------------------------------
  (1) GlobalTLABStats::initialize() を呼んで, global_stats に格納している統計情報を全て 0 にリセットしておく.
      ---------------------------------------- -}

      global_stats()->initialize();

  {- -------------------------------------------
  (1) 全ての JavaThread に対して
      ThreadLocalAllocBuffer::accumulate_statistics() を呼び出し, 
      各 TLAB の _allocation_fraction に入っている統計情報や 
      global_stats 内の統計情報を更新しておく.
      (なお, ThreadLocalAllocBuffer::accumulate_statistics() を呼び出した後は
      ThreadLocalAllocBuffer::initialize_statistics() で統計情報を全て 0 にリセットしておく)
      ---------------------------------------- -}

      for(JavaThread *thread = Threads::first(); thread; thread = thread->next()) {
        thread->tlab().accumulate_statistics();
        thread->tlab().initialize_statistics();
      }

  {- -------------------------------------------
  (1) 少しでも TLAB の確保が発生していた場合は, 
      GlobalTLABStats::publish() で PerfData 等の値を更新しておく.
      (ついでに, その場合には(トレース出力)も出している)
      ---------------------------------------- -}

      // Publish new stats if some allocation occurred.
      if (global_stats()->allocation() != 0) {
        global_stats()->publish();
        if (PrintTLAB) {
          global_stats()->print();
        }
      }
    }

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