以下のエラーが発生しました
"java.lang.OutOfMemoryError: PermGen space"
私のファイルでは、入力パラメーターcatalina.bat
の適切な場所はどこですか? set JAVA_OPTS
ファイルの一番下ですか、それとも他の場所ですか?
これを読んでください: OutOfMemory エラー。アプリケーションでメモリ リークや過度のメモリ使用が発生していないことを確認してください。
設定を変更するには、次のエントリを含むsetenv.bat
Windows または Linux 用の名前のファイルを作成します。setenv.sh
ウィンドウズ:
set JAVA_OPTS="-Xms256m -Xmx512m"
Linux:
export JAVA_OPTS="-Xms256m -Xmx512m"
この (setenv.bat/setenv.sh) ファイルを%CATALINA_HOME%\bin\
フォルダーに入れるだけです。コマンド ファイル ( catalina.bat/catalina.sh
) には、次のようなステートメントが既に含まれています。
ウィンドウズ:
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
Linux:
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
. "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
これで残りは処理されます。
他の人がすでに提案JAVA_OPTS
しているように、次のようなセットを
使用する必要がありますJAVA_OPTS="-XX:MaxPermSize=98m"
。これだけで問題はおそらく解決しますが、何度も再デプロイしていて、war / jarが巨大な場合は、このメモリ制限にも達します。
この最後のシナリオでは、テスト/開発マシンでは通常のことですが、以下を使用することをお勧めします。
-XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC
このオプションは、未使用のクラスのアンロードを有効にします。
詳細、特にコメントはこちらをご覧ください。
適切な場所は、Tomcat /bin ディレクトリに catalina.bat と一緒に新しいファイルを作成し、名前を付けてそこにsetenv.bat
配置するset JAVA_OPTS=...
ことです。
*nix システムではsetenv.sh
catalina.bat/catalina.sh は、setenv.bat/setenv.sh が存在する場合、それを実行します。これは、セクション 3.4 に記載されています。
これは、何度か再デプロイしたために発生しました。perm gen スペースを増やすことはできますが、それは避けられないエラーを遅らせるだけです.
サーバーを再起動するだけです。私は回避策を知りません。
あなたの環境で。JAVA_OPTS を設定してから catalina スクリプトを呼び出すラッパー スクリプトを作成できます。