0

私の Web アプリケーションは tomcat apache-tomcat-6.0.35 で実行されており、問題なく正常に動作していましたが、今日、catalina.out ログに以下の例外が表示され、システムにログインできませんでした。

Jul 9, 2013 2:40:15 PM org.apache.coyote.http11.Http11Processor process
SEVERE: Error processing request
java.lang.OutOfMemoryError: PermGen space

アプリケーションをデプロイまたは再デプロイすると、この例外が発生する可能性があるという印象を受けました。しかし、アプリケーションが問題なく実行されているときにこれを取得しました。この理由は何でしょうか。親切にアドバイス

4

6 に答える 6

2

Tomcat の各 webapp には、読み込まれたクラスの個別のセットを持つ個別のクラス ローダーがあります。Tomcat を起動すると、すべてのアプリのすべてのクラスが一度に読み込まれるのではなく、アプリが遅延して読み込まれます。アプリがアクティブになると、そのクラスのロードが開始され、JVM が permgen スペースを使い果たす場合があります。つまり、アプリを再デプロイしなくても発生する可能性があります。

于 2013-07-10T05:31:21.063 に答える
1

の起動時にこれらのオプションJVMをコマンド ラインにTomcat追加するか、IDE に追加しますVM Options

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

また

-XX:MaxPermGen=128M
于 2013-07-10T05:24:47.637 に答える
1

Web アプリケーションの 1 つが大量のメモリを消費しているようです。PermGenのサイズを上げてみましたか?$CATALINA_HOME/bin/catalina.sh に追加できます

-XX:PermSize=512m -XX:MaxPermSize=512m

JAVA_OPTS に追加して、実行するのに十分なスペースを割り当てます。

于 2013-07-10T05:25:11.220 に答える
1

permGen スペースから出ようとしています。Tomcat 起動スクリプトでこのパラメータを変更してみてください

/etc/init.d/tomcat6

JAVA_OPTS="-Djava.awt.headless=true -XX:MaxPermSize=512M"

メモリ量は必要に応じて設定してください。

于 2013-07-10T05:25:27.273 に答える
1

これは間違いなく、展開中に頻繁に表示されるエラーです。Grails と Java アプリケーションの両方で何度も発生するのを見てきました。JVM 起動パラメーター -XX:MaxPermSize を調整することで、permgen スペースを増やすことができます。

-XX:MaxPermSize=256m

このスレッドでは、この問題について詳しく説明しています:スレッド

于 2013-07-10T05:25:27.713 に答える
1

数日前にこのエラーが発生しました。実機を再起動して修正しました - 展開に問題がありました。

また、追加することで修正できます

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
-server -Xms1536m -Xmx1536m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"

可能な修正を参照してください

于 2013-07-10T05:25:51.173 に答える