广泛浏览过但无法找到明确的答案:使用正常Java gc回收的Apachie POI HSSF创建的对象,还是我需要做其他事情?
我有一个Java程序,它读取测试数据的文件并写入数据分析的xls文件。我注意到每个处理的文件的工作集大小(由Process Explorer报告)变大了大约3MB,这让我怀疑(尽管显式调用了gc),POI对象(单元格,行,表) )即使每个文件写入都没有延迟指针,也不会被回收。
我没有预料到这一点,因此代码每次需要时都会创建新对象(单元格等)。我看到的一个建议是创建所需的工作表,行,单元格一次,然后在写出每个xls文件之前不断在其中设置新值。这实际上会减少内存使用量,还是将新值设置到单元格中也会占用内存?
如果重要,我使用的是poi-3.9-20121203
我遇到了问题,因为我现在有几千个文件需要处理,最终会出现内存错误。 (由于各种原因,如果我可以一次性完成所有这些操作会更容易,而不是一次只能做500次。)
非常感谢任何建议和/或建议。