28

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

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

4

1 回答 1

31

按照 Antoniossss 的建议,我联系了一位开发人员。事实证明,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 文件中设置。

于 2015-12-21T13:19:48.427 回答