11.4 Kotlin 守护进程
2 分钟阅读
11.4 Kotlin 守护进程
Kotlin 守护进程是一个后台进程,构建系统可以用它来改善构建时间:让编译器和它的环境保持随时可编译的状态。这种方式避免了为每次编译启动新的 Java 虚拟机(JVM)实例并重新初始化编译器,从而缩短增量构建或频繁小改动时的构建时间。
有些构建系统有自己的守护进程来帮助减少启动开销,例如 Gradle 守护进程和 Maven 守护进程。改用 Kotlin 守护进程既能减少启动开销,又能把构建系统进程与编译器完全隔离。在系统设置可能在运行时发生变化的动态环境中,这种隔离很有用。
虽然 Kotlin 守护进程没有直接面向用户的界面,但你可以通过构建系统或构建工具 API来使用它。
Kotlin 守护进程配置
在 Gradle 或 Maven 中,有一些方式可以配置 Kotlin 守护进程的部分设置。
内存管理
Kotlin 守护进程是一个独立进程,拥有自己的内存空间,与客户端隔离。默认情况下,Kotlin 守护进程会尝试继承启动它的 JVM 进程的堆大小(-Xmx)。
要配置具体的内存限制,例如 -Xmx 和 -XX:MaxMetaspaceSize,请使用以下属性:
Gradle
| |
更多信息请参阅 kotlin.daemon.jvmargs 属性。
Maven
| |
生命周期
Kotlin 守护进程有两种常见的生命周期策略:
- 附加式守护进程:在客户端进程关闭后不久,或在守护进程一段时间未被使用后将其关闭。适用于客户端长时间运行的情况。
- 分离式守护进程:让守护进程存活更久,以等待可能的后续请求。适用于客户端生命周期较短的情况。
要配置生命周期策略,你可以使用以下选项:
| 选项 | 说明 | 默认值 |
| autoshutdownIdleSeconds | 当客户端仍然连接时,守护进程在最后一次编译之后应继续存活多久。 | 2 小时 |
| autoshutdownUnusedSeconds | 新启动的守护进程在未被使用的情况下,等待第一个客户端多久后才关闭。 | 1 分钟 |
| shutdownDelayMilliseconds | 所有客户端断开连接后,守护进程等待多久才关闭。 | 1 秒 |
要配置附加式守护进程的生命周期策略,请把 autoshutdownIdleSeconds 设为较高的值,把 shutdownDelayMilliseconds 设为较低的值。
Gradle
把以下内容添加到你的 gradle.properties 文件中:
org.gradle.jvmargs=-Dkotlin.daemon.jvm.options=autoshutdownIdleSeconds=7200,shutdownDelayMilliseconds=1000
Maven
使用以下命令:
| |
要配置分离式守护进程的生命周期策略,请把 shutdownDelayMilliseconds 设为较高的值。
Gradle
把以下内容添加到你的 gradle.properties 文件中:
org.gradle.jvmargs=-Dkotlin.daemon.jvm.options=shutdownDelayMilliseconds=7200
Maven
把以下属性添加到你的 pom.xml 文件中:
| |