我编写了一些Java代码,它从三个电子表格中获取信息,并在具有4GB内存的计算机上生成一个大型电子表格(10列,26,950行)。它正在生成电子表格(内存不足)时崩溃,但通过重写代码以一次读取100行的大型电子表格,我已经设法达到了编写输出文件的程度因为它遇到内存不足错误。
所以我想我是否可以释放三个XSSF工作簿所占用的内存,它可能会给我足够的内存来完成输出文件的写入 - 但似乎没有close()指令。
我已经尝试将工作簿设置为null,但我不相信会释放任何内存。
是否有人知道关闭XSSF工作簿并回收其占用的内存的“正确”方法?
我正在运行Java 1.8.0_25。
答案 0 :(得分:1)
您很可能会保留一些读取的工作表数据,否则应该收集垃圾。
你可以
Runtime.getRuntime().gc()
获取显式GC,答案 1 :(得分:0)
尝试使用SXSSFWorkbook代替XSSFWorkbook。它被设计为将行刷新到磁盘而不是将它们保存在内存中。