0

Java EE Web アプリケーションに PermGen Out of memory 例外があります。

java.lang.OutOfMemoryError: PermGen スペース

それを解決する方法について非常に多くの投稿を読みましたが、ほとんどすべてが PermSize (デフォルトと最大) を増やす必要があると言っています。しかし、それらを変更することはできません。次のコードを追加して、setenv.sh、catalina.sh、および startup.shを変更しようとしました。

export JAVA_OPTS="-XX:PermSize=M -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"

また、ターミナルを使用してそれを実行しようとします。

export JVM_ARGS="-XX:PermSize=256m-XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"

しかし、「jstat -gcpermcapacity」を使用して確認すると、何も変わりません。記憶はいつも同じ。私たちの環境はCentos 6、Apache 2.2、Tomcat 5.5、Java 6であり、アカウントにWHMによってサーブレットをインストールしてアプリをデプロイしました。

4

2 に答える 2

2

tomcat.conf で変更してみてください。実際にps axで確認 | grep java を実行して、パラメーターを生成するために実行されたコマンドラインを確認します。私は生産します:

26552 pts/1 Sl 0:36 /usr/lib/jvm/jre/bin/java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Xmx1024m -XX:MaxPermSize=128m -classpath :/usr/share/tomcat6/bin/bootstrap.jar:/usr/share/tomcat6/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share /tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/tmp/tomcat6 -Djava.util.logging.config.file=/usr/share/tomcat6 /conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start

これはtomcat6、java6、centos 5.5にあります

于 2012-05-22T11:42:31.813 に答える
0

問題を解決しました!アプリケーションはWHMで実行され、Tomcatの再起動を実行するスクリプトはstartup.shファイルを使用しません。この場合、リセットは/ usr/binにあるファイル「starttomcat」によって実行されます。ファイルを変更し、変数my@cmdを次のように残しました。

my @cmd = (

"./jsvc",
"-user",
"$user",
"-XX:PermSize=64M",
"-XX:MaxPermSize=512m",
"-cp",
"$jars",
"-Djava.endorsed.dirs=../common/endorsed",
"-outfile",
"${logdir}/catalina.out",
"-errfile",
"${logdir}/catalina.err",
"-verbose",
@options,
"org.apache.catalina.startup.Bootstrap",
#"-security",
"start",
);

走る!

于 2012-05-23T14:51:17.600 に答える