gradle 守护程序的高内存使用率

2022-09-01 13:16:00

我正在使用Gradle 2.5来编译一个由5个模块组成的Java项目。为了加快速度,我还使用了 gradle 守护进程。但是,在编译期间,最多有 18 个 gradle 守护进程实例正在运行。编译完成后,还剩下 15 个守护程序实例。守护进程消耗大约 600 MB 的 RAM。在后台运行这么多守护进程是正常的,还是 gradle 守护进程配置错误?

更新:我的操作系统是 Debian Jessie。Java版本是Oracle Java 8。


答案 1

根据安东尼奥斯的建议,我与一位开发人员取得了联系。事实证明,Gradle实际上非常缺乏资源。即使对于简单的“Hello World”应用程序,守护程序也可能使用高达150 MB甚至更多。启动多个守护进程线程也没关系,只要它们在同一个 JVM 中运行即可。用户端只有有限的控制来控制/限制内存使用。可以设置GRADLE_OPTS变量,以便将Xmx选项传递给JVM,例如,我设法使用以下设置构建了我的Android项目:

$ export GRADLE_OPTS="-Xmx64m -Dorg.gradle.jvmargs='-Xmx256m -XX:MaxPermSize=64m'"

第一个 -Xmx 选项是为在 CLI 中启动的 Gradle 设置的,第二个选项(在 -Dorg.gradle.jvmargs 之后)是 Gradle-Daemon 的 -Xmx 值。

显然,您为JVM允许的内存越少,构建失败的风险就越高。因此,您可能需要调整这些设置,直到它们适合您的目的。

这些设置也可以在 gradle.properties 文件中进行设置。


答案 2

推荐