【问题标题】:Could not reserve enough space for object heap in grails无法为 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

【问题讨论】:

    标签: grails heap-memory


    【解决方案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 应用程序中的许多(少量)动态常规代码(在域子方法内部)也可以减少可用堆大小。在将动态/间接代码更正为每个语句的局部变量后,堆问题就消失了。

      【讨论】:

        猜你喜欢
        • 2017-08-04
        • 2014-02-28
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 2017-05-04
        • 2013-11-04
        • 2023-03-18
        相关资源
        最近更新 更多