Top


定義場所(file name)

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

名前(function name)

void GenCollectorPolicy::initialize_flags() {

本体部(body)

  {- -------------------------------------------
  (1) フィールドの初期化
      ---------------------------------------- -}

      // All sizes must be multiples of the generation granularity.
      set_min_alignment((uintx) Generation::GenGrain);
      set_max_alignment(compute_max_alignment());

  {- -------------------------------------------
  (1) (assert)
      ---------------------------------------- -}

      assert(max_alignment() >= min_alignment() &&
             max_alignment() % min_alignment() == 0,
             "invalid alignment constraints");

  {- -------------------------------------------
  (1) CollectorPolicy::initialize_flags() を呼んで, 
      ヒープサイズに関する各種コマンドラインオプションの値を調整する.
      ---------------------------------------- -}

      CollectorPolicy::initialize_flags();

  {- -------------------------------------------
  (1) ヒープサイズに関する各種コマンドラインオプション(特に世代別 GC に関するもの)の値を調整する.
      ---------------------------------------- -}

      // All generational heaps have a youngest gen; handle those flags here.

      // Adjust max size parameters
      if (NewSize > MaxNewSize) {
        MaxNewSize = NewSize;
      }
      NewSize = align_size_down(NewSize, min_alignment());
      MaxNewSize = align_size_down(MaxNewSize, min_alignment());

  {- -------------------------------------------
  (1) (assert)
      ---------------------------------------- -}

      // Check validity of heap flags
      assert(NewSize     % min_alignment() == 0, "eden space alignment");
      assert(MaxNewSize  % min_alignment() == 0, "survivor space alignment");

  {- -------------------------------------------
  (1) もし NewSize の値が eden/to/from を入れるのに十分なほど大きくなければ, 
      (小さすぎるので) ここで異常終了させる.

      また, SurvivorRatio や NewRatio が 1 未満の値になっていたら, 
      (値としておかしいので) ここで異常終了させる.
      ---------------------------------------- -}

      if (NewSize < 3*min_alignment()) {
         // make sure there room for eden and two survivor spaces
        vm_exit_during_initialization("Too small new size specified");
      }
      if (SurvivorRatio < 1 || NewRatio < 1) {
        vm_exit_during_initialization("Invalid heap ratio specified");
      }
    }

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