java OutOfMemory或带有XSSF的GC开销
目前,我们正在使用XSSF将数据库中存储的记录导出到excel并下载。根据我们的要求,我们需要允许用户下载300万条记录
使用XSSF,我们将面临OutOfMemoryError:超出GC开销限制
我做了一些研究,了解到XSSF对记忆的渴求。有人能给我提供更好的方法来达到我的要求吗。请注意,我需要下载excel格式的数据,不想显式写入任何磁盘
你可以在下面搜索框中键入要查询的问题!
目前,我们正在使用XSSF将数据库中存储的记录导出到excel并下载。根据我们的要求,我们需要允许用户下载300万条记录
使用XSSF,我们将面临OutOfMemoryError:超出GC开销限制
我做了一些研究,了解到XSSF对记忆的渴求。有人能给我提供更好的方法来达到我的要求吗。请注意,我需要下载excel格式的数据,不想显式写入任何磁盘
# 1 楼答案
你可以使用POI API。 我们已经成功地使用POI API在我们的程序中使用大型excel文件实现了流式处理。保持内存中的行大小很重要,剩下的基本上都是在磁盘上完成的
您还可以设置:SXSSFWorkbook。setCompressTempFiles,以防止临时XML文件在磁盘上变大
使用flushRows()可以手动将行刷新到磁盘
然而,这是较慢的。但如果记忆是一种约束,那么这是唯一的选择
请记住,有些方法是隐式访问行的。如果这些行已经被交换到磁盘,你会遇到错误。我相信API只用于编写大型excel文件