我有一个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
错误。
我该如何解决这个问题?
答案 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选项。