web-dev-qa-db-ja.com

UncaughtExceptionHandlerからのTomcat7 OutOfMemoryError

さて、最近、Win7Proを新しくインストールした新しいコンピューターに移動しました

古いPCからすべての古いファイルとフォルダをコピーしました

Tomcat7ファイルを新しいPCにコピーしました

しかし今、私がそれを始めようとすると、私はこのエラーを受け取ります

Exception: Java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-2"

私はこれに対する解決策をどこでも探して、何百もの異なるものを見つけましたが、どれも私を助けませんでした

このエラーの原因となる可能性のあるアイデアはありますか? (私は古いPCからコピーされたまったく同じTomcatファイルと、古いPCでまだ機能するまったく同じプロジェクトを使用しています)

注:

古いコンピューターとまったく同じように環境変数を設定しました。

以前のPCで長年使用していたものとまったく同じWebアプリを使用しています(したがって、メモリリークやプロジェクトの問題ではありません)

6
Andre

同じエラーメッセージが表示されましたが、Web上の他のソースから、permgenスペースが不足しているだけでなく、ヒープスペースが不足しているためにエラーメッセージが表示される場合があります。

グラフィカルインターフェイスを使用する代わりに、コマンドラインからこれを修正する必要がありました。そのために、<Tomcat install directory>/bin/setenv.shに次の内容の新しいファイルを追加しました。

CATALINA_OPTS="-Xms4096M -Xmx4096M -XX:PermSize=512M -XX:MaxPermSize=512M"

既存のsetenv.shファイルがある場合は、これをそのファイルに追加します。インストールに適した数を使用してください。私のサーバーには96GBのメモリがあるので、Tomcat用に4GBの余裕があります。

catalina.shに記載されているように、これをsetenv.shではなくcatalina.shに追加して、このローカル変更をベースのcatalina.shスクリプトから分離しておく必要があります。実際のTomcatサーバーに対してのみより多くのメモリを必要とするように、CATALINA_OPTSではなくJava_OPTSを変更する必要があります。 Java_OPTSを変更すると、シャットダウンプロセス用のメモリも必要になります。これにより、システムのメモリが不足している場合にサーバーのシャットダウンが妨げられる可能性があります。

8
Warren Dew

私はついに答えを見つけました:

Tomcatのbinフォルダーに移動します

管理者として「Tomcat7w.exe」を実行します

これをJavaタブのJavaオプションに追加します

-Xms3072M
-Xmx6144M
-XX:PermSize=512m
-XX:MaxPermSize=1024m

詳細については、このリンクを確認してください

http://community.jaspersoft.com/wiki/configuring-tomcats-Java-heap-size

4
Andre

Windows 7 Tomcat 7のcatalina.batに次の行を追加するだけで、同じ問題を解決しました。

set Java_OPTS =" -XX:PermSize=512m -XX:MaxPermSize=1024m" 

私は4GBのRAMを持っていました。

1
shermi

それらをJava_OPTS(tomcatPath/bin)内にあるcatalina.sh変数に割り当てることができます。

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"

もう1つの可能性は、メモリリークが発生する可能性があることです。ここで確認できます メモリリークのトラブルシューティング

0

ここでの提案を使用して、Eclipseプラグインの単体テストの実行中にTravisCIのメモリが不足するという問題をデバッグすることができました。 MaxPermSizeを設定する必要がありました。これは、Java antタスクに次を追加することで行いました。

<jvmarg line="-Xms40m -Xmx1024m -XX:MaxPermSize=512m"/>
0
KevinL

何度も検索した結果、この解決策が見つかりました。正しく動作しました。

次のパスにある「setenv」バッチファイルの「setJava_OPTS = -Dfile.encoding = UTF-8 -Xms128m -Xmx1024m -XX:PermSize = 64m -XX:MaxPermSize = 256m」で「setJava_OPTS =%Java_OPTS%」

\ jasperreports-server-cp-5.6.0\Apache-Tomcat\bin

0
Naveen Reddy