Upgraded to K2 2.1.20 and Dagger 2.55
Issue
The stack traces are different and the issue mainly happens while running unit tests in a shard with 800+ modules, building a release app bundles with a couple of DFMs,
Код: Выделить всё
Caused by: java.lang.OutOfMemoryError: Java heap spaceЭто происходит при выполнении различных задач, перечисленных ниже. Большинство из них связаны с ресурсами, но не всегда. />: Команды: ShrinkJioreLeaseres
: remoteasist: mergeextdexdevrelease < /p>
Что я попробовал < /h3>
С тех пор, как проблема началась из -за обновления версии Kotlin, я попытался переосмыслить память для Kotlin Daemons, добавив ниже в
kotlin.daemon.jvm.options< /code> in org.gradle.jvmargs < /code>. < /p>
- Пробовал изменить максимальный размер кучи для котлина на 1 ГБ, 8 ГБ, 12 ГБ,
14 ГБ и т. Д. G1GC для Kotlin Daemons
dorg.gradle.jvmargs=" -xss10m -xx: maxheapize = 13g -xx: maxletspacesse = 2 -Xx:+heapdumponoutofmemoryerror -xx: heapdumppath =/reports/heapdumps "-dorg.gradle.daemon = false -dorg.gradle.java.home =/usr/lib/jvm/temurin -17 -jdk -amd64 -dhttp.sockettimeuut = 300000-17 -jdk -amd64 -dhttp.sockettimeout = 300000000 -Dhttp.connectiontimeout = 300000 < /p>
Environment and Gradle Command Line Params < /h3>
Агенты в CI имеют 32 ГБ оперативной памяти. < /P>
Мы используем как ksp, так и kapt.
ksp только для комнаты
kapt for datainding, dvert.### Gradle properties
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.caching=true
org.gradle.vfs.watch=true
systemProp.org.gradle.internal.http.connectionTimeout=300000
systemProp.org.gradle.internal.http.socketTimeout=300000
systemProp.org.gradle.internal.repository.max.tentatives=10
systemProp.org.gradle.internal.repository.initial.backoff=500
org.gradle.jvmargs=-XX:+UseParallelGC -Xss4m -Xms2g -Xmx12g -XX:MaxMetaspaceSize=2g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:HeapDumpPath=/reports/heapDumps
org.gradle.configuration-cache=true
org.gradle.configuration-cache.problems=warn
org.gradle.configuration-cache.max-problems=10
android.useAndroidX=true
android.enableJetifier=true
android.lifecycleProcessor.incremental=true
android.enableResourceOptimizations=true
android.nonFinalResIds=false
android.defaults.buildfeatures.resvalues=false
android.defaults.buildfeatures.shaders=false
android.injected.androidTest.leaveApksInstalledAfterRun=true
android.enableNewResourceShrinker.preciseShrinking=false
android.experimental.lint.analysisPerComponent=false
kapt.incremental.apt=true
kapt.use.jvm.ir=false
kapt.use.k2=false
ksp.useKSP2=false
kotlin.incremental.usePreciseJavaTracking=true
roborazzi.test.record=true
roborazzi.record.filePathStrategy=relativePathFromCurrentDirectory
< /code>
Обновление < /h3>
Спасибо за подробный ответ. Я пытаюсь проверить с максимальными работниками, и это кажется многообещающим. Нет проблемы с кучей для 15 прогонов для модульных тестов. По номеру у нас минимум 8 ядер в наших машинах CI, и поэтому я начал с 4 максимальных работников.
Я расскажу о результатах для выпуска APK и приложений. Я не понял эту часть вашего сообщения: «Может быть, забегайте в зависимости, чтобы избежать чрезмерного паралелизма». Можете ли вы объяснить больше об этом? Кроме того, не понимал эту линию: «Даже когда они требуются, это может помочь сузить проблему». Можете ли вы объяснить больше? Это приводит к тому, что задачи, связанные с ресурсами, тоже запускаются для модульных тестов. < /P>
testOptions {
unitTests {
includeAndroidResources = true
}
}
< /code>
Мы используем KAPT только там, где это необходимо (привязка данных и кинжал). Таким образом, ненужная конфигурация KAPT может не быть проблемой. Но я дважды проверю это.
Dagger имеет предстоящую поддержку KSP2, но привязка данных (широко используемое в кодовой базе) не обещала поддержки в будущем.
Мы используем KSP только в одном модуле для комнаты. Итак, я могу удалить это, чтобы все было проще. < /p>
Также удаление Jetifier - это работа в процессе. В настоящее время у нас есть на 3-4 библиотеки, которые по-прежнему используют библиотеки поддержки. Это изменение резко увеличит размер APK. < /p>
Также задачи, связанные с роборацци, добавляются только в 4 модулях. Итак, это не должно вызывать никаких проблем с кучей.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ased-in-ci
Мобильная версия