Демон Kotlin
Демон Kotlin — это фоновый процесс, который системы сборки могут использовать для ускорения сборки, поддерживая компилятор и его окружение в готовности к компиляции. Такой подход позволяет избежать запуска нового экземпляра виртуальной машины Java (JVM) и повторной инициализации компилятора для каждой компиляции, что сокращает время инкрементальной сборки и сборки после частых небольших изменений.
В некоторых системах сборки есть собственные демоны, помогающие сократить время запуска, например демон Gradle и демон Maven. Использование демона Kotlin также сокращает время запуска и полностью изолирует процесс системы сборки от компилятора. Такое разделение полезно в динамических средах, где системные настройки могут меняться во время выполнения.
Хотя у демона Kotlin нет непосредственного пользовательского интерфейса, его можно использовать через системы сборки или API инструментов сборки.
Настройка демона Kotlin
Некоторые настройки демона Kotlin можно задать для Gradle или Maven.
Управление памятью
Демон Kotlin — это отдельный процесс с собственным пространством памяти, изолированным от клиента. По умолчанию демон Kotlin пытается унаследовать размер кучи (-Xmx) запускающего его процесса JVM.
Чтобы настроить определённые ограничения памяти, например -Xmx и -XX:MaxMetaspaceSize, используйте следующее свойство:
kotlin.daemon.jvmargs=-Xmx1500m
Дополнительную информацию см. в описании свойства kotlin.daemon.jvmargs.
<kotlin.compiler.daemon.jvmArgs>-Xmx1500m</kotlin.compiler.daemon.jvmArgs>
Время жизни
Для демона Kotlin обычно используются две стратегии управления временем жизни:
Присоединённый демон: завершает работу вскоре после завершения клиентского процесса или после некоторого периода бездействия. Используйте, если клиент работает долго.
Отсоединённый демон: продолжает работать дольше, ожидая возможных последующих запросов. Используйте, если клиент работает недолго.
Чтобы настроить стратегию управления временем жизни, используйте следующие параметры:
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Как долго демон должен оставаться запущенным после последней компиляции, если клиент всё ещё подключён. |
2 часа |
|
Как долго недавно запущенный демон ожидает первого клиента, прежде чем завершить работу, если он не используется. |
1 минута |
|
Как долго демон ожидает завершения работы после отключения всех клиентов. |
1 секунда |
Чтобы настроить стратегию времени жизни присоединённого демона, задайте для autoshutdownIdleSeconds высокое значение, а для shutdownDelayMilliseconds — низкое.
Добавьте следующий фрагмент в файл gradle.properties:
org.gradle.jvmargs=-Dkotlin.daemon.jvm.options=autoshutdownIdleSeconds=7200,shutdownDelayMilliseconds=1000
Используйте следующую команду:
mvn package -Dkotlin.daemon.options=autoshutdownIdleSeconds=7200,shutdownDelayMilliseconds=1000
Чтобы настроить стратегию времени жизни отсоединённого демона, задайте для shutdownDelayMilliseconds высокое значение.
Добавьте следующий фрагмент в файл gradle.properties:
org.gradle.jvmargs=-Dkotlin.daemon.jvm.options=shutdownDelayMilliseconds=7200
Добавьте следующее свойство в файл pom.xml:
<kotlin.compiler.daemon.shutdownDelayMs>7200</kotlin.compiler.daemon.shutdownDelayMs>
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/kotlin-daemon.html