2

WindowsTomcatサーバーでいくつかのツールを実行しようとしています。サーバーは正常に起動し、Tomcatのマネージャーページも表示されます。しかし、ツールを開くと、「OutOfMemoryError:PermGenspace」が発生します。catalina.batでMaxPermSizeを設定して多くのことを試しました。これは、私のCATALINA_OPTSです。

set CATALINA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms64m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"

Tomcatサーバーの横でJVisualVMを実行すると、引数が適切に取得されていることがわかります。 概要

しかし、モニタータブに移動してPermGenを確認すると、最大はCATALINA_OPTSを設定した512ではなく67mbです。したがって、引数は設定されますが、Tomcatはそれらを無視します。 permgen

私はすでに数時間この問題を修正しようとしましたが、成功しませんでした。

誰?

4

1 に答える 1

5

セットの「」を削除すれば大丈夫です...理由はまだわかりません。しかし、それが答えです

set CATALINA_OPTS = -Djava.awt.headless = true -Dfile.encoding = UTF-8 -server -Xms64m -Xmx512m -XX:PermSize = 128m -XX:MaxPermSize = 512m -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled

- 編集

ところで、UseConcMarkSweepGCも必要だと思います。そうしないと、他の2つのCMSパラメーターは機能しません(JVMのバージョンに応じて、2つのうちの1つだけが必要です)。

JVMフラグCMSClassUnloadingEnabledが実際に何をするかを参照 してください。

-編集2

この質問は、tomcat6についてもここで尋ねられました:https ://serverfault.com/questions/64894/setting-catalina-opts-for-tomcat6-on-windows-doesnt-work

残念ながら、ブロガーはWindowsで引用符を使用する必要がない理由を説明していません。

http://javahowto.blogspot.nl/2006/06/6-common-errors-in-setting-java-heap.html

しかし、それは引用符でそれが1つの大きな議論として見られているからだと思います。私が理解していない唯一のことは、jvisualvmが正しく設定したふりをする理由です。しかし、引数の表示は、JVMでの設定方法を実際に確認するのではなく、引数を適切にフォーマットするだけだと思います。

于 2012-12-14T10:25:31.157 に答える