无法为 grails 中的对象堆保留足够的空间
Posted
技术标签:
【中文标题】无法为 grails 中的对象堆保留足够的空间【英文标题】:Could not reserve enough space for object heap in grails 【发布时间】:2014-06-26 22:27:37 【问题描述】:我正在开发 GGTS 3.5 和 Grails 2.3.7 版。当我运行我的项目时,我们面临堆大小的问题。
Windows 7 32 bit; RAM: 3gb.
Java 1.7 .
我也设置了以下环境变量。
GRAILS_OPTS = -XX:MaxPermSize=1024m -Xmx1024m -server
JAVA_OPTS = -XX:MaxPermSize=1024m -Xmx1024m -server
并在启动 grails 文件中更改了我的 GRAILS_OPTS
。但仍然面临同样的问题。
我刚刚开始使用 java 和 grails,请帮帮我。提前谢谢了。 错误描述:
Loading Grails 2.3.7
Configuring classpath .
Environment set to development .................................
Packaging Grails application ..........................................
Running Grails
application Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error | Forked Grails VM exited with error
【问题讨论】:
【参考方案1】:您可能需要在 BuildConfig 中更改内存参数
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: false, maxPerm: 256, daemon:true],
// configure settings for the run-app JVM
run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
// configure settings for the run-war JVM
war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
// configure settings for the Console UI JVM
console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]
【讨论】:
我调整了内存参数,但仍然面临问题。有人建议我将我的机器配置升级到 8gig ram。当我升级时,我没有收到错误。感谢您的回复。 啊,谢谢!我花了很多时间试图弄清楚为什么 GRAILS_OPTS 没有得到尊重。我什至按照上面的建议更改了 startGrails.bat 中的硬编码值,但仍然没有。这终于找到了原因。【参考方案2】:以下方法为我解决了这个问题
在 GRAILS_HOME\bin 中有一个名为 startGrails.bat
的批处理文件编辑文件并更改提到的 Xmx 和 Xms 大小:
set GRAILS_OPTS=-server -Xmx1024M -Xms512M -Dfile.encoding=UTF-8
重新启动 grails。
【讨论】:
【参考方案3】:grails 应用程序中的许多(少量)动态常规代码(在域子方法内部)也可以减少可用堆大小。在将动态/间接代码更正为每个语句的局部变量后,堆问题就消失了。
【讨论】:
以上是关于无法为 grails 中的对象堆保留足够的空间的主要内容,如果未能解决你的问题,请参考以下文章
elasticsearch安装插件:无法为对象堆保留足够的空间
无法启动守护进程...无法为 2097152KB 对象堆保留足够的空间