Skip to content

Kotlin 守護行程

Kotlin 守護行程 (daemon) 是一個背景程序,建構系統可利用它來縮短建構時間,方式是讓編譯器及其環境保持準備好進行編譯。這種方法避免了每次編譯都啟動新的 Java 虛擬機器 (JVM) 實例並重新初始化編譯器,從而減少了增量建構或頻繁小幅變更的建構時間。

一些建構系統有自己的守護行程來協助降低啟動成本,例如 Gradle daemonMaven daemon。使用 Kotlin 守護行程除了降低啟動成本外,還能將建構系統程序與編譯器完全隔離。這種分離在系統設定可能在執行時變更的動態環境中非常有用。

儘管 Kotlin 守護行程沒有直接的使用者介面,但您可以透過建構系統或 建構工具 API 來使用它。

Kotlin 守護行程設定

針對 Gradle 或 Maven,有一些方法可以設定 Kotlin 守護行程的某些設定。

記憶體管理

Kotlin 守護行程是一個獨立的程序,擁有自己的記憶體空間,與客戶端隔離。 預設情況下,Kotlin 守護行程會嘗試繼承啟動 JVM 程序的堆積大小 (-Xmx)。

要設定特定的記憶體限制,例如 -Xmx-XX:MaxMetaspaceSize,請使用以下屬性:

kotlin
kotlin.daemon.jvmargs=-Xmx1500m

更多資訊,請參閱 kotlin.daemon.jvmargs 屬性

xml
<kotlin.compiler.daemon.jvmArgs>-Xmx1500m</kotlin.compiler.daemon.jvmArgs>

生命週期

Kotlin 守護行程有兩種常見的生命週期策略:

  • 附加式守護行程 (Attached daemon):在客戶端程序關閉後不久,或守護行程閒置一段時間後關閉。適用於客戶端長時間執行的情況。
  • 分離式守護行程 (Detached daemon):讓守護行程存活更長時間,以等待潛在的後續請求。適用於客戶端短暫執行的情況。

要設定生命週期策略,您可以使用以下選項:

選項說明預設值
autoshutdownIdleSeconds當客戶端仍保持連線時,守護行程在上次編譯後應保持活動狀態多長時間。2 小時
autoshutdownUnusedSeconds新啟動的守護行程在關閉前,等待首個客戶端連接的時間,如果未使用。1 分鐘
shutdownDelayMilliseconds所有客戶端斷開連線後,守護行程等待關閉的時間。1 秒

要設定附加式守護行程生命週期策略,請將 autoshutdownIdleSeconds 設定為 值,並將 shutdownDelayMilliseconds 設定為 值。

將以下內容新增至您的 gradle.properties 檔案中:

none
org.gradle.jvmargs=-Dkotlin.daemon.jvm.options=autoshutdownIdleSeconds=7200,shutdownDelayMilliseconds=1000

使用以下命令:

bash
 mvn package -Dkotlin.daemon.options=autoshutdownIdleSeconds=7200,shutdownDelayMilliseconds=1000

要設定分離式守護行程生命週期策略,請將 shutdownDelayMilliseconds 設定為 值。

將以下內容新增至您的 gradle.properties 檔案中:

none
org.gradle.jvmargs=-Dkotlin.daemon.jvm.options=shutdownDelayMilliseconds=7200

將以下屬性新增至您的 pom.xml 檔案中:

xml
<kotlin.compiler.daemon.shutdownDelayMs>7200</kotlin.compiler.daemon.shutdownDelayMs>