gpt4 book ai didi

GradleWorkerMain OutOfMemoryError

转载 作者:行者123 更新时间:2023-12-04 05:38:50 27 4
gpt4 key购买 nike

我正在尝试对基于 ant 的(Netbeans RCP)项目进行分级并找到奇怪的分级行为。
我用探查器做了一些观察,得到了下一个结果。
环境配置

Gradle 1.9
Build time: 2013-11-19 08:20:02 UTC
Build number: none
Revision: 7970ec3503b4f5767ee1c1c69f8b4186c4763e3d

Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Ivy: 2.2.0
JVM: 1.7.0_45 (Oracle Corporation 24.45-b08)
OS: Linux 2.6.32-431.el6.x86_64 amd64

$ echo $GRADLE_OPTS
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Xms256m -Xmx2048m
$ echo $ANT_OPTS
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Xms256m -Xmx2048m
  • build.gradle - 包含 ant 任务的导入(清理、构建、单元测试)
  • settings.gradle

  • 使用 gradle 运行导入的 ant junit 测试任务
    Gradle fork 为此分离 jvm 并使用不同的 Xmx 值运行 JUnitTestRunner,忽略
    $GRADLE_OPTS 和 $ANT_OPTS 值
    不知道 gradle 如何为每个 JUnitTestRunner ant 任务定义 Xmx 大小。
    它工作正常,作为每个任务期间的 GC。
    所有模块的所有单元测试都通过且没有错误。
    为相同的模块运行 gradle build 任务
    Gradle 知道以前的构建结果,并立即开始对未测试模块进行 junit 测试。
    您可能会看到输出 here !
    Gradle 为此创建了单独的 jvm(忽略 $GRADLE_OPTS 值)并运行 GradleWorkerMain。
    这个 jvm 有 1.42GB Xmx 和 500 MB
    立即占领!然后使用的内存大小达到1.5GB。
    然后GC由于未知原因无法释放内存并抛出
    - java.lang.OutOfMemoryError: GC overhead limit exceeded
    - console log
    问题
  • 为什么 540 MB 的 ant 任务最大 Xmx 大小足以进行测试,而 GradleWorkerMain 1.5GB 还不够?
  • 我是 gradle 新手,所以可能是我的 build.gradle包含导致的错误
    在这种 GradleWorkerMain 奇怪的行为。这是真的吗?什么可能的解决方案是?
  • 如何为 GradleWorkerMain jvm 提供更多 Xmx?
  • 最佳答案

    要控制 Gradle 测试 JVM 可以使用多少内存,请配置相应的 Test任务。例如:

    test {
    maxHeapSize = "1024m"
    jvmArgs "-XX:MaxPermSize=256m"
    }

    关于GradleWorkerMain OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490105/

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