使用Apache POI HSSF时会出现内存泄漏?

ht4b089n  于 12个月前  发布在  Apache
关注(0)|答案(1)|浏览(105)

我四处寻找,但找不到一个明确的答案:使用Apachie POI HSSF创建的对象是否由普通Java gc回收,或者我需要做其他事情?
我有一个Java程序,可以读取测试数据文件,并编写数据分析的xls文件。我注意到,对于每个处理的文件,工作集大小(由Process Explorer报告)会增加大约3 MB,这让我怀疑(尽管显式调用了gc),POI对象(单元格,行,工作表)不会被回收,即使在每个文件写入后没有指向它们的延迟指针。
我没有预料到这一点,所以代码目前每次需要时都会创建新对象(单元格等)。我看到的一个建议是,创建所需的工作表、行、单元格一次,然后在写出每个xls文件之前不断地在其中设置新值。这实际上会减少内存使用量吗?或者在单元格中设置新值也会消耗内存吗?
如果有关系的话,我用的是poi-3.9-20121203
我遇到了一个问题,因为我现在有几千个文件要处理,最后出现了内存不足的错误。(由于各种原因,如果我能一次完成所有任务,而不是一次完成500个任务,那就容易多了。)
非常感谢您的任何建议和/或意见。

t2a7ltrp

t2a7ltrp1#

我建议在流程的最后调用工作簿.close()方法。

相关问题