Gradle构建SpringBoot/Kotlin协程项目出现OutOfMemoryError问题排查
解决Github Actions中Gradle测试OutOfMemoryError(OOM)问题
问题背景
我们的项目基于Spring Boot 3/R2dbc + Kotlin 1.8/Kotlin Coroutines + Java 17,近期新增大量代码后,在Github Actions执行gradle test任务时,部分测试突然抛出OutOfMemoryError(OOM),但本地运行测试完全正常。
我们使用的是16G内存的自定义Runner,并且已经调整了Gradle JVM堆内存参数:
org.gradle.jvmargs=-Xmx8g -Xms4g
但问题依然存在,报错信息中明确指向ClassGraph-worker相关线程。
排查过程
- 首先排除了Runner内存不足的可能,因为堆内存配置已经给到8G,且本地环境内存更小却能正常运行
- 跟踪报错线程,确认
ClassGraph是由spring doc依赖引入的组件 - 尝试通过配置
springdoc.packageToScan缩小接口文档的扫描范围,试图减少ClassGraph的内存占用,但OOM问题依旧出现
最终解决方案
将spring doc升级到移除了ClassGraph依赖的最新版本,重新运行Github Actions的测试任务后,OOM问题彻底解决。
内容的提问来源于stack exchange,提问作者Hantsy
相关产品推荐
相关产品推荐

