一些 ./gradlew 命令保留内存(通过 java 进程)

Some ./gradlew commands are holding memory (through java processes)

提问人:Augusto Carmo 提问时间:8/10/2022 更新时间:8/10/2022 访问量:51

问:

我察觉到,当我运行一个任务时,在任务完成后,系统仍然保留使用的内存。./gradlew

例:

  • 初始内存使用量:
    enter image description here

  • 运行任务后:
    enter image description here
    并创建一个新的 Java 进程,消耗 gbs 的内存
    ./gradlew testBuildVariant1UnitTest

  • 运行第二个任务后:
    enter image description here
    创建一个消耗 gbs 内存的新 Java 进程
    ./gradlew testBuildVariant2UnitTest


在我手动终止进程或运行以下命令之前,内存不会释放:java

./gradlew --stop

这是预期的行为吗?在运行 ./gradlew 任务后,我可以做些什么来自动释放内存?

android gradle 内存 android-gradle-plugin gradlew

评论


答:

1赞 user16358266 8/10/2022 #1

是的,这是意料之中的,它是由 Gradle 守护程序引起的

Gradle 在 Java 虚拟机 (JVM) 上运行,并使用了 支持需要大量初始化时间的库。 因此,有时启动起来似乎有点慢。这 这个问题的解决方案是 Gradle Daemon:一个长期的背景 执行生成的速度比以更快的速度执行生成的进程 否则就是这种情况。

虽然,保留内存的大小看起来令人担忧。

查看如何禁用守护程序。它列出了几种禁用它的方法,但请记住,这将降低重复调用的性能。

最简单的方法是运行或添加到您的文件中。--no-daemonorg.gradle.daemon=falsegradle.properties