gpt4 book ai didi

gradle - 为什么我的 Kotlin Gradle 构建退出代码为 137?

转载 作者:行者123 更新时间:2023-12-02 13:23:16 25 4
gpt4 key购买 nike

在运行 Kotlin 代码库测试时,我们在 CI 环境中发现了神秘的故障。

gradle test 编译代码和测试就好了。测试运行并且一切似乎都通过了。但随后 Gradle 以代码 137 退出(表明它已被 SIGKILL 终止),CI 系统因此认为构建失败。

限制 Gradle 的 JVM 大小没有帮助。 --no-daemon--max-workers 选项也没有。

这是在 Java 8 JVM 上使用 Kotlin 1.2.40 和 Gradle 4.3。

最佳答案

这个案例的罪魁祸首原来是 Kotlin 编译器。

默认情况下,Kotlin 编译器会在后台生成一个守护进程,以便后续编译作业更快。对于非常大的 Kotlin 代码库,此过程最终可能会占用大量内存。

它的存在导致 Gradle 达到 CI 容器的内存限制,并且 Linux OOM killer正在终止 Gradle 进程。

解决方案:Tell the Kotlin compiler not to spawn the background process.事实证明这是设置环境变量的简单问题:

GRADLE_OPTS=-Dkotlin.compiler.execution.strategy=in-process

有了这个变量,Kotlin 编译在 Gradle JVM 中内联运行,因此当 Gradle 继续运行测试时,它的数据可以被垃圾收集。

也可以将选项传递给 gradle 命令,而不是在环境中设置它。

关于gradle - 为什么我的 Kotlin Gradle 构建退出代码为 137?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50138863/

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