You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Batch任务结束后GC自动回收失效问题求助

Spring Batch任务完成后GC异常问题

原本GC会按预期定期回收对象,但在第一个Spring Batch任务执行完成后,出现以下异常现象:

  • 内存占用意外增长至预期值的10倍;
  • GC停止自动执行,但通过命令 jcmd <jar应用名称>.jar GC.run 可以手动触发GC并成功释放内存。

我原本以为是内存泄漏导致对象无法被回收,但手动触发GC能正常释放内存这一点让我困惑:既然GC有能力回收这些对象,为什么在应用内存不足时却不自动执行?

另外,任务中使用了Apache POI库的PoiItemReader类读取Excel文件。

我初步怀疑问题可能和以下因素有关:

  • Java应用的启动命令参数配置;
  • Apache POI库一次性读取整个Excel文件,没有采用分批读取的方式,违背了批处理的设计原则。

如果有人对此问题有排查思路或解决方案,欢迎留言讨论。

应用以容器化方式运行,镜像构建使用的Dockerfile内容如下:

FROM registry.access.redhat.com/ubi8/openjdk-11:latest
COPY build/libs/*.jar /app/app.jar
WORKDIR /app/
CMD ["java", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=75", "-jar", "app.jar"]

内容的提问来源于stack exchange,提问作者Tural Ahmadov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:22:45