代码之家  ›  专栏  ›  技术社区  ›  Fliko Genso

Java语言lang.OutOfMemoryError:大型excel文件的Java堆空间[重复]

  •  2
  • Fliko Genso  · 技术社区  · 7 年前

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

    XSSFWorkbook workbook = new XSSFWorkbook(excelFilePath);
    

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

    编辑

    我的数据示例(我的数据约为1087490行):

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  5
  •   GhostCat    7 年前

    首先,您必须确保您的文件在该工具定义良好的限制范围内,请参阅 here .

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

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

    (引自 here )