影评周公子 2026-05-14 00:50 采纳率: 99.2%
浏览 1
已采纳

MyExcel导出大数据量Excel时内存溢出如何解决?

**问题:** 使用MyExcel导出10万行以上Excel时频繁发生`java.lang.OutOfMemoryError: Java heap space`,即使已将JVM堆内存调至4GB仍无法缓解。根本原因在于MyExcel默认采用DOM式写入(全量对象驻留内存),每行生成SXSSF或XSSF对象时会缓存大量Cell、Row、Sheet引用,且未及时触发GC;同时,流式导出(StreamingWriter)未正确启用或分片逻辑缺失,导致内存随数据量线性增长。此外,自定义样式复用不足、字符串常量未池化、异步导出未配合线程局部变量清理,进一步加剧内存压力。该问题在Spring Boot微服务中尤为突出——单次导出可能阻塞线程并拖垮整个实例。如何在不牺牲兼容性和可维护性的前提下,实现百万级数据的低内存、高稳定导出?
  • 写回答

2条回答 默认 最新

  • 夜郎king 2022博客之星IT其它领域TOP 12 2026-05-14 09:02
    关注

    建议分批,不要一次性将数据加载到内存中,这样极易引起内存问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 5月15日
  • 创建了问题 5月14日