7

以下のエラーが発生しました

"java.lang.OutOfMemoryError: PermGen space"

私のファイルでは、入力パラメーターcatalina.batの適切な場所はどこですか? set JAVA_OPTSファイルの一番下ですか、それとも他の場所ですか?

4

5 に答える 5

31

これを読んでください: OutOfMemory エラー。アプリケーションでメモリ リークや過度のメモリ使用が発生していないことを確認してください。

設定を変更するには、次のエントリを含むsetenv.batWindows または 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

これで残りは処理されます。

于 2012-10-31T18:17:30.400 に答える
5

他の人がすでに提案JAVA_OPTSしているように、次のようなセットを 使用する必要がありますJAVA_OPTS="-XX:MaxPermSize=98m"。これだけで問題はおそらく解決しますが、何度も再デプロイしていて、war / jarが巨大な場合は、このメモリ制限にも達します。

この最後のシナリオでは、テスト/開発マシンでは通常のことですが、以下を使用することをお勧めします。

-XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC

このオプションは、未使用のクラスのアンロードを有効にします。

詳細、特にコメントはこちらをご覧ください。

于 2012-10-31T18:39:07.463 に答える
5

適切な場所は、Tomcat /bin ディレクトリに catalina.bat と一緒に新しいファイルを作成し、名前を付けてそこにsetenv.bat配置するset JAVA_OPTS=...ことです。

*nix システムではsetenv.sh

catalina.bat/catalina.sh は、setenv.bat/setenv.sh が存在する場合、それを実行します。これは、セクション 3.4 に記載されています。

于 2012-10-31T18:12:54.680 に答える
1

これは、何度か再デプロイしたために発生しました。perm gen スペースを増やすことはできますが、それは避けられないエラーを遅らせるだけです.

サーバーを再起動するだけです。私は回避策を知りません。

于 2012-10-31T18:11:07.550 に答える
1

あなたの環境で。JAVA_OPTS を設定してから catalina スクリプトを呼び出すラッパー スクリプトを作成できます。

于 2012-10-31T18:11:29.890 に答える