Настройте машинную память сборки с помощью демона компиляции kotlin, параллельно обрабатывайте демоны

#android #performance #kotlin #gradle #continuous-integration

Вопрос:

Предполагая, что у нас есть следующая настройка машины сборки:
24 ядра.
16 ГБ оперативной памяти.
Версия для Котлина: 1.5.30

Я хотел бы скомпилировать исходные тексты и найти стабильную конфигурацию, чтобы избежать ошибок OOM и поддерживать оптимальную скорость

Например, в Android это может быть :app:assembleDebug задача, которая выполняет компиляцию и создает apk

У Kotlin есть собственный демон сборки, который работает вместе с демоном gradle.
Мы должны использовать --parallel флаг для несвязанных проектов, чтобы ускорить сборку.

И здесь самая сложная часть заключается в том, как разделить доступную оперативную память между параллельными работниками gradle и демонами котлина, чтобы предотвратить ООМ.

Какое значение следует использовать org.gradle.jvmargs kotlin.daemon.jvm.options --max-workers=3 , например, в и с?

Как мы можем дать для демона kotlin 4G с kotlin.daemon.jvm.options=-Xmx4G помощью , должны ли мы установить конфигурацию gradle workers как org.gradle.jvmargs=-Xmx12G для нашей машины сборки или 12G/3: org.gradle.jvmargs=-Xmx4G ?

Можно ли создать несколько демонов котлина и, как следствие, превысить ограничения памяти?