为什么Gradle构建的Kotlin源代码暂停〜3秒“强制System.gc()”?

每个构建需要额外的3-4秒,在日志输出打印以下后立即暂停。

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

为什么要“强迫”呢? 我如何避免这种情况,加快我的构建?

我研究过这个,这是Gradle的调试级别日志启用的结果(例如gradle --debug assemble

运行Gradle而不启用调试日志记录(例如, gradle --info assemble ,这不应该发生。

参考文献: libraries / tools / kotlin-gradle-plugin / src / main / kotlin / org / jetbrains / kotlin / gradle / plugin / KotlinGradleBuildServices.kt

Kotlin Gradle插件仅在启用调试日志记录时才会调用System.gc (Gradle是使用-d--debug命令行参数运行的)。 用户通常不会在启用调试日志记录的情况下运行Gradle,因为它非常嘈杂且速度很慢,所以强制执行GC是一个相对较小的问题。

从历史上看,当Gradle守护进程被启用时,这个行为被添加来测试内存泄漏。 这个想法是在构建之前和之后记录已用内存的差异,因此在测试中运行一些构建,并声明差异不超过阈值。

我认为应该避免调用System.gc除非测试KotlinGradleIT#testKotlinOnlyDaemonMemory正在运行,所以我在Kotlin KotlinGradleIT#testKotlinOnlyDaemonMemory上创建了一个问题https://youtrack.jetbrains.com/issue/KT-17960