gpt4 book ai didi

grails - 如何增加内存并修复 Grails 中的 "GC overhead limit exceeded"错误?

转载 作者:行者123 更新时间:2023-12-01 10:44:11 25 4
gpt4 key购买 nike

我尝试在 BuildConfig 中更改内存使用配置:

grails.project.fork = [

// Configure settings for the test-app JVM, uses the daemon by default
test: [maxMemory: "changedThis", minMemory: 64, debug: false, maxPerm: 256, daemon:true],
]
与“运行”相同。
但是,我的堆栈跟踪中仍然出现 GC 开销限制超出错误。我对 BuildConfig 的做法是正确的还是遗漏了什么?
PS:场景是我正在处理一个文件中的 500,000 行数字(长度最多为 8 个字符),我们不希望它被单独处理

最佳答案

使用您的内存设置 JVM,当在本地计算机上以开发/测试模式运行时,它在尝试创建对象时可能会耗尽内存,因此正在运行 GC 尝试回收内存并抛出异常。下面是一个项目中的 grails.project.fork 示例,我必须在启动时在 BootStrap.groovy 中创建很多对象:

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: 768, debug: false, maxPerm: 768, daemon:true],
// Configure settings for the run-app JVM
run: [maxMemory: 4560, minMemory: 1024, debug: false, maxPerm: 2560, forkReserve:false],
// Configure settings for the run-war JVM
war: [maxMemory: 4560, minMemory: 2560, debug: false, maxPerm: 2560, forkReserve:false],
// Configure settings for the Console UI JVM
console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
另一件要尝试的事情是在 Tomcat 中使用更大的堆(例如 2 GB)运行应用程序,然后查看您的 GC 错误是否消失。顺便说一句,我发现 Grails 使用新的 G1 垃圾收集器和 JVM 上的 -server 标志运行得更好。
从我的生产 Tomcat 7 实例的 setenv.sh 文件中:
export CATALINA_OPTS="$CATALINA_OPTS -Xms6g"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx6g"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=768m"

关于grails - 如何增加内存并修复 Grails 中的 "GC overhead limit exceeded"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com