JBossのヒープメモリサイズを調整する
Eclipse + JBossで開発を行っているが、OutOfMemoryErrorが発生してしまうことがある。
JBossを起動し直すと改善する場合もあるが、
根本的に解決するにはJBossのヒープメモリのサイズを変更する。
まずは現在のメモリサイズの確認。
JBossを起動して
http://localhost:8080/web-console/index.html
にアクセスすると、以下のような画面が表示される:

画面左下の"Max Memory"となっているのが最大メモリサイズ。
Java VMのデフォルト値が64MBなので"63 MB"と表示されている。
※ なぜ1MB少ないのかは不明(要調査)
Eclipseからlombozプラグイン経由で起動すると、VMのデフォルトのヒープメモリサイズ(64MB)が適用される。
これを変更するには、以下のように行う:
◆ EclipseでVM引数を指定する
Eclipseで、
起動後にコンソール画面で確認すると"127 MB"となっている(やはり1MB少ない...)。

※ これを設定してもlomboz経由の起動を再度行うと設定が無効になり、
適用したVM引数もクリアされてしまう。
それならばJBossを起動すればいいのかと思ったのだが、、、
一応、以下のようにすればJBoss起動時のヒープメモリサイズを変更できる:
<JBoss_Home>/bin/run.bat内の、以下の記述を探す:
※ -Xmsには起動時のメモリサイズ、-Xmxには最大メモリサイズを指定する。
ちなみに、Unixの場合は同じフォルダにあるrun.confを編集すればよいようだ。
----------
Eclipseと連携させずにJBossを動かすときはこれでいいと思われるが、
lomboz経由でJBossを起動するとやはりデフォルトの設定が適用されてしまう。
EclipseでVM引数を指定して起動すれば一応何とかなるのでこれ以降はよく調べてないのだが、
Eclipse + lombozのバージョンの問題とかかなぁ。
lombozの後継といわれるWTPならVM引数の指定もできるのかなぁ。
いずれ調査する。
最適なヒープメモリサイズはどれくらいかということについては、以下のページが参考になりそう:
ガベージコレクタの仕組みを理解する
----------
ぼくは今のところ単体(開発)環境でしかJBossを使っていないので、
それほどシビアにパフォーマンスチューニングする必要はないのだが
(基本的にはデフォルトの64Mで、必要なら128Mに設定する程度)、
このあたりもいずれ本格的に調査したい。
JBossを起動し直すと改善する場合もあるが、
根本的に解決するにはJBossのヒープメモリのサイズを変更する。
現在のメモリサイズをコンソール画面で確認する
まずは現在のメモリサイズの確認。
JBossを起動して
http://localhost:8080/web-console/index.html
にアクセスすると、以下のような画面が表示される:
画面左下の"Max Memory"となっているのが最大メモリサイズ。
Java VMのデフォルト値が64MBなので"63 MB"と表示されている。
※ なぜ1MB少ないのかは不明(要調査)
ヒープメモリのサイズを変更する
Eclipseからlombozプラグイン経由で起動すると、VMのデフォルトのヒープメモリサイズ(64MB)が適用される。
これを変更するには、以下のように行う:
◆ EclipseでVM引数を指定する
Eclipseで、
メニューバーの 実行 → デバッグ → デバッグダイアログ起動
構成でJBossを選択
"引き数"タブの"VM 引き数"欄に
-Xmx128M
などと入力してデバッグボタン押下(下図参照)
起動後にコンソール画面で確認すると"127 MB"となっている(やはり1MB少ない...)。
※ これを設定してもlomboz経由の起動を再度行うと設定が無効になり、
適用したVM引数もクリアされてしまう。
それならばJBossを起動すればいいのかと思ったのだが、、、
JBossのrun.batファイルを編集する ※ lomboz経由だと反映されない?
一応、以下のようにすればJBoss起動時のヒープメモリサイズを変更できる:
<JBoss_Home>/bin/run.bat内の、以下の記述を探す:
この2行目のコメントアウトを解除し、rem Sun JVM memory allocation pool parameters. Uncomment and modify as appropriate.
rem set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m
のように変更し、保存する。
※ -Xmsには起動時のメモリサイズ、-Xmxには最大メモリサイズを指定する。
ちなみに、Unixの場合は同じフォルダにあるrun.confを編集すればよいようだ。
----------
結局
Eclipseと連携させずにJBossを動かすときはこれでいいと思われるが、
lomboz経由でJBossを起動するとやはりデフォルトの設定が適用されてしまう。
EclipseでVM引数を指定して起動すれば一応何とかなるのでこれ以降はよく調べてないのだが、
Eclipse + lombozのバージョンの問題とかかなぁ。
lombozの後継といわれるWTPならVM引数の指定もできるのかなぁ。
いずれ調査する。
ヒープメモリサイズを検討する
最適なヒープメモリサイズはどれくらいかということについては、以下のページが参考になりそう:
ガベージコレクタの仕組みを理解する
----------
ぼくは今のところ単体(開発)環境でしかJBossを使っていないので、
それほどシビアにパフォーマンスチューニングする必要はないのだが
(基本的にはデフォルトの64Mで、必要なら128Mに設定する程度)、
このあたりもいずれ本格的に調査したい。