Kotlin Daemon
Kotlin Daemon 是一个后台进程, 通过它, 构建系统可以让编译器及其运行环境保持就绪状态以执行编译, 以此提高构建速度. 这种方案避免了对每次编译都启动一个新的 Java Virtual Machine (JVM) 实例, 并重新初始化编译器, 从而减少增量编译或频繁的小规模变更时的构建时间.
一些构建系统有自己的 Daemon 来降低启动开销, 例如 Gradle Daemon 和 Maven Daemon. 使用 Kotlin Daemon 代替它们, 可以降低启动开销, 同时还能将构建系统进程与编译器完全隔离. 在系统设置可能在运行期发生变化的动态环境中, 这样的隔离非常有用.
尽管 Kotlin Daemon 没有直接面向用户的接口, 但你可以通过构建系统或 构建工具 API 使用它.
Kotlin Daemon 配置
可以通过以下方式为 Gradle 或 Maven 配置 Kotlin Daemon 的某些设置.
内存管理
Kotlin Daemon 是一个独立的进程, 有它自己的内存空间, 与客户端隔离. 默认情况下, Kotlin Daemon 会尝试继承启动它的 JVM 进程的堆内存大小 (-Xmx).
要配置特定的内存限制, 例如 -Xmx 和 -XX:MaxMetaspaceSize, 请使用以下属性:
详情请参见 kotlin.daemon.jvmargs 属性.
生命周期
Kotlin Daemon 有两种常用的生命周期策略:
Attached Daemon: 在客户端进程关闭后不久, 或 Daemon 长时间未使用后关闭 Daemon. 适用于客户端长期运行的情况.
Detached Daemon: 让 Daemon 保持更长时间的运行, 等待潜在的后续请求. 适用于客户端短暂运行的情况.
要配置生命周期策略, 可以使用以下选项:
选项 | 描述 | 默认值 |
|---|---|---|
| 在客户端仍连接的情况下, 上次编译结束后 Daemon 应保持存活的时长. | 2 小时 |
| 新启动的 Daemon 在未被使用时, 等待第 1 个客户端连接的时长. | 1 分钟 |
| 所有客户端断开连接后, Daemon 等待关闭的时长. | 1 秒 |
要配置 Attached Daemon 的生命周期策略, 请将 autoshutdownIdleSeconds 设置为较大的值, 将 shutdownDelayMilliseconds 设置为较小的值.
在 gradle.properties 文件中添加以下内容:
使用以下命令:
要配置 Detached Daemon 的生命周期策略, 请将 shutdownDelayMilliseconds 设置为较大的值.
在 gradle.properties 文件中添加以下内容:
在 pom.xml 文件中添加以下属性: