已广泛环顾四周,但找不到明确的答案:使用 Aachie POI HSSF 创建的对象是由普通 Java gc 回收的,还是我需要做其他事情?
我有一个 Java 程序,它读取测试数据文件并写入数据分析的 xls 文件。我注意到工作集大小(由 Process Explorer 报告)对于每个处理的文件都会增大约 3MB,这让我怀疑(尽管显式调用 gc)POI 对象(单元格、行、工作表)是没有被回收,即使在每个文件写入后没有指向它们的挥之不去的指针。
我没有预料到这一点,因此代码当前每次需要时都会创建新对象(单元格等)。我看到的一个建议是创建一次所需的工作表、行、单元格,然后在写出每个 xls 文件之前继续在其中设置新值。这实际上会减少内存使用,还是在单元格中设置新值也会消耗内存?
万一这很重要,我正在使用 poi-3.9-20121203
我遇到了一个问题,因为我现在有数千个文件要处理并且最终出现内存不足错误。(由于各种原因,如果我可以一次完成所有这些操作会容易得多,而不必一次说 500 个。)
非常感谢您的任何建议和/或建议。