gpt4 book ai didi

java - 内存不足 : GC limit exceeded while creating XSSFWorkBook from InputStream

转载 作者:行者123 更新时间:2023-12-02 04:11:27 25 4
gpt4 key购买 nike

我正在尝试在网络服务器中上传 Excel 文件并在服务器中处理它。我正在使用 Apache POI 库来解析 excel 文件。我正在使用以下代码 -

XSSFWorkBook workBook = new XSSFWorkBook(multiPartFile.getInputStream());

服务器堆大小设置为 2GB。如果 excel 文件的大小很小(例如 - 250 Kb),那么没问题,但对于负载测试,我尝试使用 12 Mb excel 文件,但失败并出现 OutOfMemory 错误。

我开始知道从 InputStream 创建工作簿确实是一个占用内存的操作。那么有没有更好的方法从InputStream构建XSSFWorkBook?

最佳答案

XSSFWorkbook 可能会“按设计”使用相当多的内存,因为它提供对所有工作表/行/单元格的完全随机访问。

有一些方法可以使内存使用情况更加可预测,因此它们提供的功能较少或需要您做更多的工作。

看一下示例 XLSX2CSV它使用流式 XLSX 解析器来读取信息,因此即使对于非常大的文档,也能以非常低的内存开销运行。

在写入大文件方面,Apache POI 提供 SXSSFWorkbook它允许编写巨大的电子表格,而不需要大量的内存。

关于java - 内存不足 : GC limit exceeded while creating XSSFWorkBook from InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33756726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com