第3章 The Gradle Daemon(守护进程)

来源:互联网 发布:生产流程优化 编辑:程序博客网 时间:2024/06/06 17:16

From Wikipedia…

A daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user.

Gradle运行在JVM中,需要一些资源包,使得gradle的初始化时间较长,开始运行gradle时感觉比较较慢。Gradle Daemon用于处理这个问题:一个在后台长时间运行的进程执行你的build任务。这种方式省去了初始化加载的时间、缓存的申请和释放,并将你的工程信息缓存在内存中。使用Gradle的Daemon非常简单,只需要在gradle的配置文件中设置是否开启即可。

3.1. Gradle Daemon为什么对性能如此重要

Daemon是长时运行(long-lived)的进程,执行任务时不仅节省了JVM的启动时间,还可以将工程结构、任务、文件等信息存放在内存中。通过重用之前构建任务的计算结果提高构建速度。

但是这种方式获益多少是动态的,一个典型的测试显示它提升的效率在15-75%。推荐使用--profile输出构建报告来分析使用Daemon提升的效率。

Gradle从3.0以后默认开启Daemon,因此你无需做任何事情,就可享受它带来的利益。

3.2. Daemon的运行状态

使用--status命令可以查看Daemon的运行状态。

示例 3.1 Daemon运行状态

gradle --status的运行结果:

>gradle --status   PID STATUS   INFO  4268 IDLE     4.2.1 10288 STOPPED  (by user or operating system)Only Daemons for the current Gradle version are displayed.

运行版本的gradle只能连接到同版本的daemon上,以后的gradle版本可能会移除这个限制。

3.3. 关闭Daemon

Gradle Daemon模式是开启状态,我们也推荐如此。如果想关闭Daemon,可以在«USER_HOME»/.gradle/gradle.properties中配置:

org.gradle.daemon=false

如果启动了Daemon,不管你使用的哪个gradle版本,都可以获得启动加速的利益。

持续集成

开发服务器上和持续集成服务器上都推荐开启Daemon。但是有可能启动Daemon会照成你的持续基础构建不稳定。你可以默认关闭Daemon,每次构建启用新的Daemon,这样每次构建会被隔离开来。

3.4. 关闭正在运行的Daemon

Daemon会在后台自动运行,因此构建过程中不费心它的启动,并且它会监控系统内存的使用情况,一旦发现系统内存匮乏,它会自动关闭进程。你也可以使用gradle --stop手动关闭Daemon。

示例 3.2 关闭Daemon

Chapter3>gradle --stopStopping Daemon(s)1 Daemon stopped

这里关闭的是与当前运行时gradle同一版本的Daemon进程。如果你本地安装了JDK,可以使用jps命令查询带有GradleDaemon字样的进程列表。

示例 3.3 查看进程

Chapter3>jps3504 Jps944 GradleDaemon

本章为非应用篇,因此节选了部分内容,如果想了解完整的Daemon介绍,请参考原文(https://docs.gradle.org/current/userguide/gradle_daemon.html)