hotspot/src/share/vm/memory/collectorPolicy.cpp
void GenCollectorPolicy::initialize_flags() {
{- -------------------------------------------
(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.