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

标签 tomcat logging grails permgen

我有一个在 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 
...

所以我找到了解决此问题的常见方法:增加堆和永久代空间:

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。 还有其他想法吗?

干杯! 木龙

最佳答案

谢谢大家! 我终于通过添加解决了这个问题:

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

到 tomcat6w.exe 上的 java 选项。

谢谢!

关于tomcat - 如何确保 Tomcat6 在 Windows 上读取 CATALINA_OPTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583757/

相关文章:

eclipse - 无法访问部署在本地的远程JSP webservice

java - Log4j 删除后不重新创建日志文件

Grails:使用 ajax 更新多个页面元素

Tomcat 9 - 为 manager-gui 使用非明文密码无法正常工作

java - 为什么在使用 Web Fragments 时出现 "Premature End of File"错误

docker - Filebeat监控容器内多个容器的日志

java - 日志回滚多个服务

grails - 如何在Grails/GORM映射中要求某些列的值?

grails - 处理网络连接停顿的Grails

java - 如何使用 apache POI 读取和替换书签值