java - 在 Tomcat 上使用 Jenkins 重新部署 Grails 应用程序填补了 PermGen 空间

标签 java tomcat grails memory-management permgen

目前我们在 Tomcat 6 上部署 Grails 应用程序时遇到各种问题,主要是关于内存使用问题和通过 Jenkins 重新部署。

应用程序占用越来越多的内存,我们尝试使用 CMSPermGenSweepingEnabled 解决这个问题(我们正在使用 UseConcMarkSweepGC),所以现在应该清理 Groovy 使用的临时类。

仍然存在的问题是,在每次重新部署(使用 jenkins)时,应用程序需要大约 150 mb 的额外 Permgen 空间......知道如何避免这种情况吗?

我们正在使用 Grail 1.3.7,我们当前的配置标志是

-Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties
-Djava.awt.headless=true
-Xms2048M
-Xmx2048M
-XX:MaxPermSize=1024m
-XX:PermSize=1024m
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
-Djava.net.preferIPv4Stack=true
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=/usr/share/tomcat6/endorsed
-Dcatalina.base=/var/lib/tomcat6
-Dcatalina.home=/usr/share/tomcat6
-Djava.io.tmpdir=/tmp/tomcat6-tmp

最佳答案

非常popular tomcat issue ,他们甚至有一些建议:http://wiki.apache.org/tomcat/OutOfMemory ,但在大多数情况下,它仅适用于小型或完全受控的项目(意思是“没有任何外部库的项目”)。我见过的所有可靠项目都在 tomcat 下失败并出现此错误:(

我的建议 - 部署后重启 Tomcat 实例。

关于java - 在 Tomcat 上使用 Jenkins 重新部署 Grails 应用程序填补了 PermGen 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398133/

相关文章:

jquery - 如何获得对同一GSP页面的回复

grails - 如何防止 Grails 缓存旧版本的 gsp 文件?

java - 在使用 java 的 ARCore 中,如何在我的世界中绘制 3D 三角形/线

java - 字段和代码中的可选类型安全吗?

tomcat - 如何在 spring 批处理作业中添加监听器以捕获 tomcat 关闭事件

java - Maven Tomcat7 运行依赖 war

ubuntu - 未找到 Grails 命令

java - C++语言内存模型

java - 从数据库中检索一个值并将其设置为Spring boot中的@Table Name值

Tomcat 服务器日志的文件名中有日期 - rotatable=false 不起作用