在测试时定义 grails 内存设置

Posted

技术标签:

【中文标题】在测试时定义 grails 内存设置【英文标题】:define grails memory settings while testing 【发布时间】:2021-03-24 20:50:00 【问题描述】:

我有一个带有集成测试的 grails 4.0.2 应用程序,需要大量内存。

当前,当我运行测试时,它失败并显示:java.lang.OutOfMemoryError: GC 开销限制超出。在旧 grails 中,您可以在 build.config 中定义 grails.project.fork。

此外,我尝试使用所需的内存配置指定 GRAILS_OPTS 但这给了我消息 -> 忽略选项 MaxPermSize=512m; 8.0 中移除了支持

我也尝试过将 build.gradle 调整为以下

bootRun 
    ignoreExitValue true
    jvmArgs(
        '-Dspring.output.ansi.enabled=always', 
        '-noverify', 
        '-XX:TieredStopAtLevel=1',
        '-Xmx2048m')
    sourceResources sourceSets.main
    String springProfilesActive = 'spring.profiles.active'
    systemProperty springProfilesActive, System.getProperty(springProfilesActive)


tasks.withType(GroovyCompile) 
    configure(groovyOptions) 
        forkOptions.jvmArgs = ['-Xmx2048m']
    

为测试 grails 4 指定内存设置的正确方法是什么?

【问题讨论】:

【参考方案1】:

我在将 Grails 3 应用程序移植到 4 时遇到了同样的问题,以下为我解决了这个问题。

test 
    jvmArgs('-Xmx4g', '-XX:+UseG1GC')


integrationTest 
    jvmArgs('-Xmx4g', '-XX:+UseG1GC')

【讨论】:

以上是关于在测试时定义 grails 内存设置的主要内容,如果未能解决你的问题,请参考以下文章

Grails 2.3 迁移脚本不会在集成测试期间运行

内存数据库中的 H2:使用 JDBC 设置时区? Java 单元测试

使用 H2 内存数据库设置 Scala Play 测试

具有弹簧安全性的 Grails 3.2.6。保存用户时未在内存中创建 h2 数据库

设置条件以避免双重释放分配的内存

oracle安装时需要的虚拟内存大小