您有两种选择。选项1-增加JVM
Heap的大小,以便Java有更多的可用内存。使用UserModel代码在POI中处理Excel文件是基于DOM的,因此整个文件(包括已解析的表单)需要缓冲到内存中。尝试这样的问题,以获取有关如何增加帮助的建议。
选项#2的工作量更大-
切换到基于事件(SAX)的处理。这一次只处理文件的一部分,因此需要少得多的内存。但是,这需要您做更多的工作,这就是为什么您最好将更多的GB内存扔给这个问题-
内存便宜,而程序员却没有!该电子表格HOWTO页有关于如何做的的.xlsx文件的SAX解析说明,并有通过POI提供的各种示例文件,你可以看看的意见。
。
另外,另一件事-
您似乎正在通过流加载文件,这很糟糕,因为这意味着更多内容需要缓冲到内存中。有关更多信息,请参阅POI文档,包括有关如何直接使用文件的说明。



