[alibaba/easyexcel]xls格式文件导出oom

2024-03-07 216 views
4

image 我导出100w行数据,使用的是xls ,数据是分页获取的,数据写到一大半时候内存已经溢出了,2G内存,使用xlsx良好,是否只支持xlsx大数据量的导出

指定过excelType 也是一样

回答

7

xls行格式是有要求的 不能超过65536行 建议使用xlsx

9

@gongxuanzhang 您好,我在使用easyexcel 3.10版本 进行数据导出时发生了OOM,通过分析hprof文件, Xobj$ElementXobj 和 Xobj$AttrXobj 对象占比分别达到了2.05g和1.8g。导出文件类型为xlsx,数据量在35w左右,jvm最大堆内存为6g。请问3.10以上版本有针对导出内存使用进行优化吗? 目前在不增加内存的情况下,考虑使用两个方案,一个是减少不必要的单元格样式,一个是采用POI SXSSFWorkbook导出 image

1

导出的时候默认就是SXSSFWorkbook 但是如果有很多样式可能会有奇奇怪怪的问题

4

好的,感谢,在考虑减少一些不必要的样式和单元格格式校验了

8

因为格式是固定上限数量的,所以poi尽量会选择复用。 如果格式多了就会留下来 可能会就导致释放不掉的情况

0

你说的这个是单sheet页这么多行把,我这边单sheet 5w,分20个sheet 页

4

后面发现头部使用富文本了,为了富文本能正常展示使用了inMemory这个参数,这个参数产生的内存溢出