2009-08-20 26 views
4

Webアプリケーションを開発しています.JBoss 4.0.2を使用し、Eclipseを複数回再展開したときにjBossメモリ不足のためクラッシュします。また、新しいバージョンをプロダクション環境にインストールする必要がある場合、プロダクションサーバーのメモリを消費するため、jBossを停止して顧客のサーバーからメモリを再配置しないようにする必要があります。この問題の回避策はありますか?jBoss 4.0.2同じWARを複数回展開すると、PermGem /メモリ不足エラーのためにjBossがクラッシュする

答えて

5

基本的には、 JBossクラスローダが動作する方法のため、各デプロイメントは、アプリケーションがアンデプロイされても解放されないPermGenの塊を使い果たします。

PermGenメモリプールのサイズを数百メガ(またはギグ)まで増やすことで症状を緩和することができます。これにより問題をより簡単に生き生きとさせることができます。また、コード内の静的フィールド(特に大きなオブジェクトを参照する静的フィールド)の使用を減らすと、PermGenへの影響が軽減されることがわかりました。

理想的には、本番環境でホットデプロイメントを使用せず、サーバーをシャットダウンし、WAR/EARを置き換えてから再起動します。

0

リンクされているかどうかはわかりませんが、JBossはJ2EE準拠ではありません。

クラスローダーがあり、すべてのクラスが入っているので、クラスをアンロードすることができないため、この問題が発生します。この点でjbossをよりJ2EE準拠に設定することができます。

「メモリ不足」を取得していますか、またはメモリが不足していますか?

また、JProfilerを接続してメモリ使用量を確認することで進歩しました。

私はJbossをいつも再起動してしまいました。時間がかかりすぎませんでした。

-XX:+ UseConcMarkSweepGCを -XX:+ CMSPermGenSweepingEnabled -XX:+ CMSClassUnloadingEnabled -XX:MaxPermSizeを= 128メートル

CMSができ、実際にGCを

0

(SunのJavaに適用される)、これを試してみてくださいパーマネントジェネレーションヒープ(あなたのクラスがあるヒープ)。 MaxPermSizeを設定する必要はありませんが、アプリケーションサーバーではデフォルトは低く設定されています。

関連する問題