- 追加された行はこの色です。
- 削除された行はこの色です。
- Java/メモリ設定のあれこれ へ行く。
- Java/メモリ設定のあれこれ の差分を削除
参照:まず、ここが丁寧で分かりやすい。 - [[JVMのチューニング - ITエンジニアとして生きる>http://d.hatena.ne.jp/ogin_s57/20120709/1341836704]] * ヒープとスタック [#df478ed8] メモリには - ヒープと - スタックがあって ヒープはnew(alloc)して確保するのに使う。スタックは関数呼び出しで確保するのに使う。 * スタック [#s3ac9982] 関数を呼び出すと関数ごとにフレームという単位でスタックに領域が確保される。 main() { a(); } a() { b(); } とすると +------+ | main |↓下向きに積まれるとして +------+ | a | +------+ | b | +------+ 関数ローカルな変数がここで確保される。 * ヒープ [#efeb974e] 動的にメモリをallocするのに確保する領域。クラスをnewしてインスタンス化するものはすべてここ。 +--------------------+--------------------+ | New Area | Old Area | +---------+----------+ + +---------+----------+ | | Eden | Survivor | | +---------+----------+--------------------+ ** New領域とOld領域 [#ka3314d4] ヒープ領域もいろいろありNew領域とOld領域がある。 短命なインスタンスはNew領域で済ませたい、ということがあり頻繁にnewしては破棄するならNew領域が大きいほうがよい、ということになる。が、Old領域が少な過ぎてもフルGCがはたらきやすくなるので宜しくない。 -XX:NewRatio=2 New領域に対するOld領域の割合を指定する。この場合 New領域:Old領域 = 1:2 になる。 ** Eden領域とSurvivor領域 [#za9694f3] New領域もいろいろあり(またか)Eden領域とSurvivor領域がある。 New領域のなかでさらに効率化するための仕組み。Survivor領域の割合が小さいとOld領域に行きやすくなる。 -XX:SurvivorRatio=8 Survivor領域のFrom空間とTo空間に対するEden領域の割合を指定する。この場合 Eden領域:Survivor領域 = 8:(1+1) になる。