さて、最近、Win7Proを新しくインストールした新しいコンピューターに移動しました
古いPCからすべての古いファイルとフォルダをコピーしました
Tomcat7ファイルを新しいPCにコピーしました
しかし今、私がそれを始めようとすると、私はこのエラーを受け取ります
Exception: Java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-2"
私はこれに対する解決策をどこでも探して、何百もの異なるものを見つけましたが、どれも私を助けませんでした
このエラーの原因となる可能性のあるアイデアはありますか? (私は古いPCからコピーされたまったく同じTomcatファイルと、古いPCでまだ機能するまったく同じプロジェクトを使用しています)
注:
古いコンピューターとまったく同じように環境変数を設定しました。
以前のPCで長年使用していたものとまったく同じWebアプリを使用しています(したがって、メモリリークやプロジェクトの問題ではありません)
同じエラーメッセージが表示されましたが、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
を変更すると、シャットダウンプロセス用のメモリも必要になります。これにより、システムのメモリが不足している場合にサーバーのシャットダウンが妨げられる可能性があります。
私はついに答えを見つけました:
Tomcatのbinフォルダーに移動します
管理者として「Tomcat7w.exe」を実行します
これをJavaタブのJavaオプションに追加します
-Xms3072M
-Xmx6144M
-XX:PermSize=512m
-XX:MaxPermSize=1024m
詳細については、このリンクを確認してください
http://community.jaspersoft.com/wiki/configuring-tomcats-Java-heap-size
Windows 7 Tomcat 7のcatalina.batに次の行を追加するだけで、同じ問題を解決しました。
set Java_OPTS =" -XX:PermSize=512m -XX:MaxPermSize=1024m"
私は4GBのRAMを持っていました。
それらを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つの可能性は、メモリリークが発生する可能性があることです。ここで確認できます メモリリークのトラブルシューティング 。
ここでの提案を使用して、Eclipseプラグインの単体テストの実行中にTravisCIのメモリが不足するという問題をデバッグすることができました。 MaxPermSizeを設定する必要がありました。これは、Java antタスクに次を追加することで行いました。
<jvmarg line="-Xms40m -Xmx1024m -XX:MaxPermSize=512m"/>
何度も検索した結果、この解決策が見つかりました。正しく動作しました。
次のパスにある「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