JBOSS AS 5のJVM 6メモリ設定はどうですか?
質問
JBOSSで実行するICEFacesアプリケーションを使用しています。現在のヒープサイズは
に設定されています-Xms1024m– Xmx1024m -XX:MaxPermSize = 256m
JBOSS AS 5(5.0.1 GA)JVM 6のメモリパラメータを調整するための推奨事項は何ですか?
解決
これによると、記事:
AS 5は、 PermGen 。起動時に、
OutOfMemoryException:PermGen Error
がスローされることがよくあります。
これは、開発中にアプリケーションを頻繁にホットデプロイする場合、特に面倒です。この場合、JBoss QAはpermgenサイズを上げ、クラスのアンロードとpermgenスイープを許可することを推奨します:
-XX:PermSize=512m -XX:MaxPermSize=1024 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
しかし、これはもっと参考になるので、この構成を盲目的に適用することはお勧めしません(人々がコメントに書いているように、「壊れていない場合は修正しないでください」)。
ヒープサイズについては、常に留意してください。ヒープが大きいほど、メジャーGCが長くなります。さて、「間違いなく小さすぎた」と言うとき、これが何を意味するのか(エラー、症状など)本当にわかりません。私の知る限り、1024mのヒープは実際にはwebappにとってはかなり大きく、ほとんどのアプリケーションにとっては十分すぎるはずです。主要なGC期間に注意してください。
他のヒント
ヒープ:512 MBから開始し、アプリが絶対に取得しないと思われる場所に上限を設定します。サーバーがスワップを開始しないようにします。
Permgen:通常、アプリで使用されるすべてのクラスをアプリが読み取れば、十分に安定しています。アプリをテストし、256 MBで動作する場合は、そのままにしておきます。
@wds:ヒープの最大値を可能な限り高く設定することは、次の2つの理由から間違いなく良い考えではありません。
- ヒープが大きいと、フルGCに時間がかかります。 PermGenスキャンを有効にしている場合、大きなPermGenスペースもGCに時間がかかります。
- JBoss AS on Linuxは、未使用のI / Oハンドルを開いたままにして、Linuxが強制的にクリーンアップできるようにし、マシン上のすべてのプロセスを完了するまでブロックします(1分以上かかる場合があります!)ホットデプロイスキャナーの無効化を忘れると、これが頻繁に発生します。
これは、アプリケーションで週に1回、次のようになるまで発生します。
- -XmsをJBoss ASの起動が遅くなり始めたところまで減少しました
- -Xmxを完全なGCがより頻繁に発生するまで減少させたため、Linux I / Oハンドルのクリーンアップが停止しました
開発者にとっては、PermGenを増やすことは問題ないと思いますが、実稼働環境では、GCの長い一時停止を回避するために必要なもののみを使用する必要があります。