一尘不染

如何确保Tomcat6在Windows上读取CATALINA_OPTS?

tomcat

我在Windows2003计算机上运行了Tomcat6。我在此服务器上部署了2个Grails应用程序,很快我注意到在部署后的某个时间,一切都崩溃了,并出现经典的PermGen错误。

java.lang.OutOfMemoryError: PermGen space
 java.lang.ClassLoader.defineClass1(Native Method)
 java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
 java.lang.ClassLoader.defineClass(ClassLoader.java:616)
 org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.de 
...

因此,我找到了解决此问题的通用方法:使用以下方法增加堆和permgen空间:

set CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"

添加到C:\ apache-tomcat-6.0.26 \ bin \
catalina.bat中。不幸的是,这没有用,但是问题是我不确定Tomcat是否正在接受它。我检查了各种日志,但这些选项从未打印出来。有没有一种方法可以记录它们并确保Tomcat已读取它们?

编辑:我试图与tomcat6w.exe添加以下JVM选项:

-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled 
-XX:+UseConcMarkSweepGC

并没有改变。2-3分钟的正常运行时间后,我得到了permGen。还有其他想法吗?

干杯! 慕罗尼


阅读 642

收藏
2020-06-16

共1个答案

一尘不染

谢谢你们!我终于通过添加以下内容解决了该问题:

-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
-XX:PermSize=128m
-XX:MaxPermSize=512m

到tomcat6w.exe上的Java选项。

谢谢!

2020-06-16