¿Por qué Gradle construye el código fuente de Kotlin haciendo una pausa de ~ 3 segundos "forzando System.gc ()"?

Cada compilation tarda de 3 a 4 segundos adicionales, deteniéndose inmediatamente después de que la salida de logging imprima lo siguiente.

[LIFECYCLE] [org.jetbrains.kotlin.gradle.plugin.KotlinGradleBuildServices] Forcing System.gc ()

¿Por qué está "forzando" esto? ¿Cómo puedo evitar esto y acelerar mi construcción?

    He investigado esto, y esto es una consecuencia de tener habilitado el logging de nivel de debugging de Gradle (por ejemplo, gradle --debug assemble ) .

    Ejecute Gradle sin el logging de debugging habilitado (por ejemplo, gradle --info assemble ) y esto ya no debería ocurrir.

    Referencias: libraries / tools / kotlin-gradle-plugin / src / main / kotlin / org / jetbrains / kotlin / gradle / plugin / KotlinGradleBuildServices.kt

    Los complementos de Kotlin Gradle invocan System.gc antes y después de una compilation solo cuando el logging de debugging está habilitado (Gradle se ejecuta con el argumento de línea de command -d o --debug ). Los usuarios normalmente no ejecutan Gradle con el logging de debugging habilitado porque es extremadamente ruidoso y lento, por lo que forzar un GC es un problema relativamente menor.

    Históricamente, este comportamiento se agregó para probar contra las pérdidas de memory cuando el daemon de Gradle está habilitado. La idea era registrar una diferencia de memory utilizada antes y después de una compilation, ejecutar algunas comstackciones en consecuencia en una testing y afirmar que la diferencia no excede el umbral.

    Creo que se debe evitar llamar a System.gc less que se KotlinGradleIT#testKotlinOnlyDaemonMemory la testing KotlinGradleIT#testKotlinOnlyDaemonMemory , por lo que he creado un problema en Kotlin bugtracker https://youtrack.jetbrains.com/issue/KT-17960