java.lang.OutOfMemoryError:使用 Apache POI 阅读 Excel 时的 Java 堆空间

2022-09-01 22:38:19

我的文件是9MB,我在加载工作簿时收到此错误。

XSSFWorkbook workbook = new XSSFWorkbook(excelFilePath); 

此行导致java.lang.OutOfMemoryError: Java heap space

我该如何解决这个问题?


答案 1

首先要检查的是 - 您是使用输入流还是文件打开XSSFWorkbook?用文件打开它要低得多

接下来,您想读还是写?如果内存对您来说非常紧张,则可以使用类似萨克斯的方式使用XSSF的替代选项。

有关阅读,请参阅 http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api,了解有关使用 XSSF + Sax 的详细信息。作为另一种选择,如果您只想获取文件的文本内容,那么看起来Apache Tika有一个基于事件的文本提取器,用于使用POI.xlsx文件。

对于写作,最近在POI开发列表中有很多关于改进“大网格演示”的讨论。你可能想遵循这些 - http://poi.apache.org/mailinglists.html


答案 2

我认为默认堆大小为128M

您可以使用java参数来增加这一点-Xmx

例如:

java -Xmx512m myapp.java

推荐