作者:乔山办公网日期:
返回目录:excel表格制作
POI使用Workbook在内存中生成整个文档, 因此到了百万级数据时瓶颈处于内存.
优化方式通常有以下几种方法:
买内存条加大电脑内存
限制每个文件大小, 数据量大时根据最大数量进行分割.
不要一次全部读入,分批读入
~
~
~
~
POI使用Workbook在内存中生成整个文档, 因此到了百万级数据时瓶颈处于内存. 优化方式通常有以下几种方法: 买内存条加大电脑内存 限制每个文件大小, 数据量大时根据最大数量进行分割.
记得有个属性,
POI3.8的SXSSF包是XSSF的一个扩展版本,支copy持流处理,在生成大数据量的电子表格且堆空间有限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
比如内存中限制行数为100,当行号到达101时,行号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。
rowAccessWindowSize代表指定的内存中缓存记zd录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。