java.lang.OutOfMemoryError:大型Excel文件的Java堆空间[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.lang.OutOfMemoryError:大型Excel文件的Java堆空间[重复]相关的知识,希望对你有一定的参考价值。

我正在使用Apache POI来读取excel文件。我的文件大约是100MB,我在加载工作簿时得到了这个java.lang.OutOfMemoryError:Java堆

XSSFWorkbook workbook = new XSSFWorkbook(excelFilePath);

我的计算机内存是8GB,所以它不能使用-Xmx太大。所以我的问题是如何处理这个错误?

编辑

我的数据样本(我的数据大约是1087490行):

enter image description here

答案

首先 - 您必须确保您的文件在该工具的明确限制范围内 - 请参阅here

除此之外,对于较大的文件耗尽内存似乎是一个非常常见的问题,一种解决方案是“手动”处理XML数据:

如果内存占用是个问题,那么对于XSSF,您可以获取基础XML数据并自行处理。这适用于愿意学习.xlsx文件的一些低级结构的中间开发人员,以及在java中处理XML的人。它使用起来比较简单,但需要对文件结构有基本的了解。提供的优点是您可以读取内存占用相对较小的XLSX文件。

(引自qazxsw poi)

以上是关于java.lang.OutOfMemoryError:大型Excel文件的Java堆空间[重复]的主要内容,如果未能解决你的问题,请参考以下文章