Top


定義場所(file name)

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

名前(function name)

HeapWord* GenCollectedHeap::attempt_allocation(size_t size,
                                               bool is_tlab,
                                               bool first_only) {

本体部(body)

  {- -------------------------------------------
  (1) 各 Generation に対して, 若い世代から順に
      Generation::should_allocate() でその Generation で確保すべきオブジェクトかどうかを調べ, 
      should_allocate() が true を返せば, Generation::allocate() でメモリ確保を試みる.

      メモリ確保が成功した時点でリターン. (もし, 全ての Generation で失敗すれば NULL をリターン).
      また, 引数の first_only が true であれば, 一回目の Generation::allocate() が終わった時点で成否に関わらず結果をリターン.
      ---------------------------------------- -}

      HeapWord* res;
      for (int i = 0; i < _n_gens; i++) {
        if (_gens[i]->should_allocate(size, is_tlab)) {
          res = _gens[i]->allocate(size, is_tlab);
          if (res != NULL) return res;
          else if (first_only) break;
        }
      }
      // Otherwise...
      return NULL;
    }

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