Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的Kotlin Gradle build在退出代码为137时死亡?_Gradle_Kotlin - Fatal编程技术网

为什么我的Kotlin Gradle build在退出代码为137时死亡?

为什么我的Kotlin Gradle build在退出代码为137时死亡?,gradle,kotlin,Gradle,Kotlin,当运行Kotlin代码库的测试时,我们在CI环境中看到了神秘的失败 gradletest编译了代码,测试结果很好。测试开始了,似乎都通过了。但随后Gradle退出了,代码为137(表明它被SIGKILL杀死),CI系统因此认为构建失败了 限制Gradle的JVM大小没有帮助。--no-daemon和--max-workers选项也没有 这是在Java 8 JVM上使用Kotlin 1.2.40和Gradle 4.3。本例中的罪魁祸首是Kotlin编译器 默认情况下,Kotlin编译器在后台生成守

当运行Kotlin代码库的测试时,我们在CI环境中看到了神秘的失败

gradletest
编译了代码,测试结果很好。测试开始了,似乎都通过了。但随后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容器上的内存限制,并且正在终止Gradle进程

解决方案:这是一个设置环境变量的简单问题:

GRADLE\u OPTS=-Dkotlin.compiler.execution.strategy=进程内

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


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

本例中的罪魁祸首是Kotlin编译器

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

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

解决方案:这是一个设置环境变量的简单问题:

GRADLE\u OPTS=-Dkotlin.compiler.execution.strategy=进程内

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


将该选项传递给
gradle
命令,而不是在环境中设置它也会起作用。

我与gradle团队进行了交谈。他们建议使用默认的守护进程。基本上,kotlin编译器将在其自己的守护进程中运行,这将通过kotlin编译器特定的预热节省大量时间。您可以使用-Dkotlin.daemon.jvm.options=-Xmx6g增加编译器守护进程的内存。下面的文章我和gradle团队谈过。他们建议使用默认的守护进程。基本上,kotlin编译器将在其自己的守护进程中运行,这将通过kotlin编译器特定的预热节省大量时间。您可以使用-Dkotlin.daemon.jvm.options=-Xmx6g增加编译器守护进程的内存。下文