第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)
- 第3章 The Gradle Daemon(守护进程)
- Gradle Daemon (守护进程)
- AndroidStudio Unable to start the daemon process(无法启动Gradle守护进程)
- 守护进程(Daemon)
- linux 守护进程 daemon
- 守护进程daemon
- python daemon 守护进程
- linux 守护进程 daemon
- 守护进程(Daemon)
- 写守护进程daemon
- 守护进程(Daemon)
- daemon 守护进程
- 守护进程(daemon)
- 守护进程(Daemon)
- 编写daemon守护进程
- 守护进程(daemon)
- linux 守护进程 daemon
- 守护进程(daemon)
- JingS-3
- ACM大数模版
- Python ——优雅的解释型语言
- TCP 滑动窗口协议/1比特滑动窗口协议/后退n协议/选择重传协议
- 文本输入带有Emoji表情问题
- 第3章 The Gradle Daemon(守护进程)
- STM32的心得
- 【VBA自学笔记(二)】Json自用笔记——1.格式化Json字符串
- 验证 Swarm 数据持久性
- 设置npm的registry几种方法
- Linux基本命令二
- Android函数响应式编程——必学的RxJava转换操作符toList、toSortedList、toMap
- 几个软件安装与环境配置的网址收藏
- Selenium+PhantomJS()+PIL漫画快照