【问题标题】:Jenkins Gradle "Could not reserve enough space for object heap"Jenkins Gradle“无法为对象堆保留足够的空间”
【发布时间】:2023-03-18 19:13:01
【问题描述】:

我正在尝试在 Jenkins 上使用 Gradle 运行构建任务,但 Gradle 无法运行。

Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.

参数-Xmx2048m显然在Java中用于运行Gradle进程。 如果这个参数有问题,我应该在哪里改变它? (Jenkins 配置为-Xmx1024m)。我在具有 1GB RAM 的设备上运行它(运行任务前大约有 700 - 500MB 可用空间)。

完整日志:http://pastebin.com/BBsjp5pZ

【问题讨论】:

  • 你能列出你都试过的吗?
  • @ND27 在配置中更改 Jenkins 的堆大小,尝试使用或不使用守护程序的 Gradle,不同版本的 Gradle(最新 rc 和现在 2.10),Gradle 包装器与 Jenkins 安装的 Gradle,释放 RAM跨度>
  • 当机器只有 500MB 可用空间时,我认为您不会想为 Java 分配 2GB 空间。预计这会导致您的构建消耗的内存超过机器可用的内存,这可能会导致您崩溃。一般来说,我建议不要在这么小的机器上运行 Jenkins。如果必须,请尝试为 gradle 分配 less 内存,它可能会更好。但是如果你的构建很大,它很可能会在一个完整的堆栈中崩溃。
  • @Jolta 问题是我不知道如何在 Jenkins 中更改 Gradle 进程的 JVM 参数

标签: jenkins gradle jvm heap-memory


【解决方案1】:

我不得不修改项目文件夹中的gradle.properties 文件

原始设置:

org.gradle.jvmargs=-Xmx2048m

新设置:

org.gradle.jvmargs=-Xmx512m -Xms100m

参考资料:

Where should I put gradle.properties in Jenkins https://docs.gradle.org/current/userguide/build_environment.html

【讨论】:

  • 虽然本身不​​是一个糟糕的解决方案,但这会影响 Jenkins 主机以外的其他服务器上的构建,因为它可能有更多的可用内存。有关仅对 Jenkins 主机产生本地影响的替代解决方案,请参阅 Jayan 的回答。
  • @Jolta Jayan 的回答不适合我,但有一种方法可以让 gradle.properties 每台机器工作,而不是每个项目
  • 很好,这对我很有帮助。谢谢
【解决方案2】:

Jenkins manual 谈论“GRADLE_OPTS”。

Gradle 构建步骤您可以通过添加 -Xmx 或 -XX:MaxPermSize Jenkins 全局中的 GRADLE_OPTS 全局环境变量 配置。为此,请单击管理 Jenkins,然后单击配置 系统。在全局属性部分中,单击环境 变量复选框,然后添加一个名为的新环境变量 GRADLE_OPTS 的值设置得当,类似于屏幕 上面关于 MAVEN_OPTS 的拍摄

【讨论】:

    猜你喜欢
    • 2015-07-14
    • 2014-02-28
    • 2012-09-17
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2013-11-04
    相关资源
    最近更新 更多