- 履歴一覧
- 現在との差分 を表示
- ソース を表示
- 履歴 を表示
- Java/メモリ設定のあれこれ へ行く。
- 1 (2015-08-26 (水) 08:11:22)
- 2 (2015-08-26 (水) 09:14:19)
- 3 (2015-08-27 (木) 01:29:54)
- 追加された行はこの色です。
- 削除された行はこの色です。
参照:まず、ここが丁寧で分かりやすい。 - [[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領域とOld領域 [#ka3314d4] ヒープ領域もいろいろあり New領域とOld領域がある。 短命なインスタンスはNew領域で済ませたい、 ということがあり頻繁にnewしては破棄するならNew領域が大きいほうがよい、 ということになる。 が、Old領域が少な過ぎてもフルGCがはたらきやすくなるので宜しくない。 ** Eden領域とSurvivor領域 [#za9694f3] New領域もいろいろあり(またか) Eden領域とSurvivor領域がある。 New領域のなかでさらに効率化するための仕組みで、 SurvivorRatioが大きいとOld領域に行きやすくなる。 デフォルト値が8でデフォルトままが推奨のよう。