java - Excel POI 3.5 WorkBook Java 堆空间异常?

标签 java excel apache-poi heap-memory

我正在使用最新的 POI 3.5 进行 Excel 阅读。我安装了 Excel MS office 2007,为此 poi 提供了 XSSF 来执行数据。

15000行数据正常执行,但超过限制到30000或100000或200000时,容易出现Java堆空间异常。

代码如下:

UATinput = new FileInputStream(UATFilePath);

uatBufferedInputStream = new BufferedInputStream(UATinput);

UATworkbook = new XSSFWorkbook(uatBufferedInputStream);

我在最后一行收到有关 Java 堆大小的异常。 我已经使用 -Xms256m -Xmx1536m 增加了大小,但对于更多数据,它仍然给出 Java 堆空间异常。

谁能帮我解决 XSSFWorbook 的这个异常?

最佳答案

尝试使用 eventusermodel 而不是读取内存中的整个文件接口(interface)

这是一种非常节省内存的读取大文件的方法。它按照 SAX 解析器(与 DOM 相对)的原理工作,即在遇到特定数据结构时调用回调方法。它可能会有点棘手,因为它希望您了解基础数据的本质

Here你可以找到关于这个主题的很好的教程

希望这对您有所帮助!

关于java - Excel POI 3.5 WorkBook Java 堆空间异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159635/

相关文章:

java - Java 的非阻塞 Web 服务器

java - 在 Java/Android 中,我是通过 Intent 还是使用 getter/setter 传递值?

c# - Azure - 'Microsoft.ACE.OleDb.12.0' 提供程序未在本地计算机上注册

Excel VBA 到 Word 取消选择选定的文本

java - 如何在不使用 break 或 continue 语句的情况下遍历所有非空行?

java - Apache POI XSLFSlide 页码

java - 如何让我的微调器与我的 EditText 具有相同的宽度?

java - Stack.peek() 比较返回错误结果 -1024

javascript - 将 HTML 表格导出到 Excel JavaScript 函数添加选择文件名

java.lang.NoSuchMethodError : org. apache.poi.hssf.usermodel.HSSFWorkbook.createDataFormat()Lorg/apache/poi/hssf/usermodel/HSSFDataFormat;