Grails Tomcat OutofMemory错误

时间:2013-03-22 15:15:08

标签: tomcat grails

我有一个Grails应用程序,我用war命令打包:grails war。我需要将它部署到运行Tomcat的远程机器上。

当我执行drop deploy(将WAR文件复制到C:\Program Files (x86)\apache-tomcat-7.0.37\webapps)并运行C:\Program Files (x86)\apache-tomcat-7.0.37\bin\startup.bat时,PermGem和Heap空间出现了几个OutofMemory错误。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:4)

启动tomcat时我通常会做的事情:

export JAVA_OPTS="-Xms1024m -Xmx2024m -XX:MaxPermSize=512m"; export CATALINA_OPTS="-Xms1024m -Xmx2024m -XX:MaxPermSize=512m"; /etc/init.d/tomcat6 restart; tail -f /var/lib/tomcat6/logs/catalina.out

修复了所有内存问题。我有6个Grails应用程序在运行该配置。

答案 1 :(得分:2)

在Tomcat服务器上,添加系统环境变量:JAVA_OPTS -Xmx512m

此外,在conf / BuildConfig.groovy中的Grails应用程序中,在顶部的以下行添加该行: grails.tomcat.jvmArgs = [“ - Xms256m”,“ - Xmx1024m”,“ - XX:PermSize = 512m”,“ - XX:MaxPermSize = 512m”]

这似乎解决了我面临的许多问题。

答案 2 :(得分:0)

如果您使用的是Ubuntu,我建议编辑/ etc / default / tomcat6(或tomcat7,具体取决于您的运行情况)。

第20行是JAVA_OPTS线样本;取消注释,然后编辑它以适合您的硬件。

我的奔跑是:

 JAVA_OPTS="-Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC"

在演出中使用的RAM封顶,并将permsize设置为512m。

答案 3 :(得分:0)

使用Grails Build.config上的默认值 改变这一点:

grails.project.fork = [
// configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required
//  compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true],

// configure settings for the test-app JVM, uses the daemon by default
test: [maxMemory: 768, minMemory: 64, debug: true, maxPerm: 256, daemon:true],
// configure settings for the run-app JVM
run: [maxMemory: 500, minMemory: 64, debug: true, maxPerm: 256, forkReserve:false],
// configure settings for the run-war JVM
war: [maxMemory: 500, minMemory: 64, debug: true, maxPerm: 256, forkReserve:false],
// configure settings for the Console UI JVM
console: [maxMemory: 500, minMemory: 64, debug: true, maxPerm: 256]

答案 4 :(得分:0)

如果你使用基于服务的tomcat,那么你可能没有bin文件夹中的catalina.bat文件。 然后尝试添加这些java选项。 enter image description here