java.lang.OutOfMemoryError
Eclipseの設定で、パーマネント領域の最大メモリ量を増やすとすごい動作安定するよねッ!
なんでデフォルトの設定で増やしていないのか不思議だよねッ
プラグインとか入れまくったら足りなくなるらしいよッ
JVMのメモリ管理の仕組みが知りたい…
jvmについて疑問が満載なんだけど、どうやって勉強していいか分かんない…。
と思いJava仮想マシン仕様をジュンク堂で立ち読みしてきたけど、立ち読みじゃ読み切れないよあの本…。
まずはいま知ってる語彙と考えを一致させたい。
- Hot Spot VMって何だ
- JITコンパイラとかもよくわかってないんだなぁ
- VMにも種類あるの?
- SunJDKとかOpenJDKとか
- メソッドエリアとパーマネント領域は同じ意味?
- と言うかJavaとは関係ないけど、Cとかで言う静的領域とは、実行時にメモリ領域の拡張ってできないのかなー
- 気持ち実行時にメモリ領域増やす=mallocしないといけない=ヒープ領域使う、というイメージ。
と言うか、細かく言えばGCの仕様・仕組みが知りたいのかもしれない。
GCの範疇なのかな、この辺は。JVMのメモリ管理の仕様が知りたい。パーマネント領域も一応GC走るみたいだし。
うおらー
- ヒープ領域(インスタンス変数とかの領域かな)
- new領域
- Eden領域
- S0
- S1
- Old領域
- new領域
- パーマネント領域
- classの情報
- static宣言のオブジェクトも多分入ると思ってる
- メソッドの情報
- システム・メモリー
思えばクラスローダーで自前で読み込んだクラス情報ってパーマネント領域に格納されるのかなー
なら実行中にメモリ領域を拡張する必要があるなー
Toolとか
JVM監視ツール入れて挙動見てみたいなぁ
http://thinkit.co.jp/story/2011/03/25/2054?page=0,0