守护进程在 JVM 垃圾收集器抖动和 JVM 内存耗尽后立即停止

问题描述 投票:0回答:3

当我使用 gradle 6.0 构建多模块 java 项目时,当我添加 >30 个模块时。抛出此错误:

Gradle Daemon started in 2 s 267 ms

> Configure project :soa-misc
"/opt/dabai/tools/jdk1.8.0_211/jre/lib/ext/"
null
Expiring Daemon because JVM heap space is exhausted
Daemon will be stopped at the end of the build after running out of JVM memory
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Daemon is stopping immediately JVM garbage collector thrashing and after running out of JVM memory

我尝试在我的

$HOME/.gradle/gradle.properties
中添加参数:

org.gradle.jvmargs=-Xmx8096m -XX:MaxPermSize=8096m -XX:+HeapDumpOnOutOfMemoryError

但是问题还没有解决,我该怎么办?

java gradle
3个回答
80
投票

我在根项目目录中添加

gradle.properties
文件,并添加此配置:

org.gradle.jvmargs=-Xmx4096M

有效。从错误信息中我们可以知道Daemon JVM空间已耗尽。这是关于此配置的 Gradle 官方文档

指定用于 Gradle 守护进程的 JVM 参数。设置为 对于配置构建的 JVM 内存设置特别有用 表现。这不会影响 Gradle 的 JVM 设置 客户端虚拟机。默认为-Xmx512m“-XX:MaxMetaspaceSize=256m”。


1
投票

请注意,如果您出于某种原因无法修改

gradle.properties
文件(例如,我针对无法在本地重现的 CICD 管道问题修改了
gitlab-ci.yml
文件的脚本),您可以使用命令行标志(使用
-D
前缀)如@Dolphin上面的“官方文档”中所引用。

-Dorg.gradle.jvmargs=-Xmx4096M

-2
投票

也许它也会帮助其他用户。

当我在

gradlew clean
目录上执行
android
并忘记用
cd ..
返回时,我收到了这个错误,并且我在
android
目录中运行了启动应用程序的命令,但实际上不应该。

解决方案是从

android
目录返回并在应用程序的根目录中运行启动命令。

© www.soinside.com 2019 - 2024. All rights reserved.