无法为 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 中的对象堆保留足够的空间的主要内容,如果未能解决你的问题,请参考以下文章

无法为对象堆保留足够的空间:Android Studio

elasticsearch安装插件:无法为对象堆保留足够的空间

无法启动守护进程...无法为 2097152KB 对象堆保留足够的空间

Intellij 偶尔无法为对象堆保留足够的空间

Cordova 无法为 2097152KB 对象堆保留足够的空间

Java 拒绝启动 - 无法为对象堆保留足够的空间