记录一次使用poi的HSSFWorkbook内存溢出问题
新增导出功能发版后出现生产导出服务内存只增不减,最后导致内存溢出宕机,每次这种情况出现在月底,报表导出数据过多。后面查资料发现使用HSSFWorkbook是将list数据存在内存生成的excel,会导致内存溢出,可将HSSFWorkbook 替换成SXSSFWorkbook。SXSSFWorkbook会将数据存在磁盘中,然后将数据写入到excel中,贴上部分代码:
改之前:
Workbook workbook = null;if (fileType == ExcelType.XLS) {workbook = new HSSFWorkbook();} else if (fileType == ExcelType.XLSX) {workbook = new XSSFWorkbook();} else if (fileType == ExcelType.SXLSX) {workbook = new SXSSFWorkbook(500);}
改后:
if (fileType == ExcelType.XLS) {workbook = new HSSFWorkbook();} else if (fileType == ExcelType.XLSX) {// 这里将原来的XSSFWorkbook 替换成了 SXSSFWorkbookXSSFWorkbook sheets = new XSSFWorkbook();workbook = new SXSSFWorkbook(sheets,500);} else if (fileType == ExcelType.SXLSX) {workbook = new SXSSFWorkbook(500);}
上面 new SXSSFWorkbook(sheets,500); 表示导出数据超过500条,多余的数据会生成临时文件存在磁盘中,在本地测试过程中在我在C:\Users\cd\AppData\Local\Temp\poifiles找到了临时文件
测试过程中我在 workbook.write(outputStream);之前打了断点,write之前 文件是有值的,
调用workbook.write(outputStream); 会将临时文件清除
贴上部分修改代码:
记录一次使用poi的HSSFWorkbook内存溢出问题相关推荐
- 解决java poi海量数据导出内存溢出问题
找了很多天的解决方法,一直被分页查询绕进去了,其实数据都能查出来的,真正卡的地方是ExcelExportUtil类下调错了方法. 最开始调用的方法是(标记的地方): workbook = new H ...
- 超大数据量的xlsx格式的excel文件的读取和解析,解决了POI方式的内存溢出和性能问题
在之前的博文< POI读取并解析xlsx格式的excel文件>中,在小数据量的情况下是可以轻松愉快的处理的,但是当excel文件的数据量达到百万级的时候, InputStream is = ...
- java poi 图片 内存溢出_解决java poi海量数据导出内存溢出问题
找了很多天的解决方法,一直被分页查询绕进去了,其实数据都能查出来的,真正卡的地方是ExcelExportUtil类下调错了方法. 最开始调用的方法是(标记的地方): workbook = new H ...
- POI导出数据内存溢出问题
POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果也不是太好.3.8版本的POI新出来了SXSSFWorkbook,可以支持大数据量的操作,只是SXSSFWo ...
- java字符串换行符替换成段落标记_导出EXCEL换行符br为什么没有起到作用/poi导出excel内存溢出...
导出EXCEL换行符br为什么没有起到作用 br是html中的换行符,在excel中并不起效,excel中换行是用alt enter强制插入的,或者用vba代码强制换行的. 导出EXCEL换行符为什么 ...
- POI解决读入Excel内存溢出
POI读取excel表 下面是结构图 大批量数据读取的问题 在项目中遇到二十万行数据的excel用poi读取会内存溢出,一般方法是调大tomcat的内存,但是调到2048M还是会内存溢出报错 poi官 ...
- POI读写超大数据量Excel,解决超过几万行而导致内存溢出的问题(附源码)
来源:cnblogs.com/swordfall/p/8298386.html 1. Excel2003与Excel2007 两个版本的最大行数和列数不同,2003版最大行数是65536行,最大列数是 ...
- Java 中如何解决 POI 读写 excel 几万行数据时内存溢出的问题?(附源码)
>>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. Excel2003与Excel2007 两个版本 ...
- poi 上传Excel如何处理大文件,避免内存溢出
使用poi做上传时,使用一般的形式,用户模式:new WorkBook()时,代码简单易懂,但是这种方式只能操作小文件,遇到大的文件就会报内存溢出的错.有问题就要解决,下面分享几种解决方式 第一种:只 ...
最新文章
- libevent-signal(2)
- mac平台反编译apk,获取源码,androidmanifest和资源文件
- 关于嵌入式学习随笔-6《NVIC中断优先级管理》
- Web前端——JavaScript(基本语法)
- cdf日上免税店_cdf会员购吐槽大会!从上海日上开始!
- 在Ubuntu 18.04上安装MongoDB
- 饿了么:日订单量超900万的架构设计及演进之路
- FMEA软件功能失效矩阵-交叉表 vs 树形矩阵
- js动画 无缝轮播 进度条 文字页面展示 div弹窗遮罩效果
- oracle round 没有0,oracle round函数的使用方法
- VBS QQ微信消息轰炸
- 类和对象4:类、类对象、实例对象
- 【redux------状态管理库】
- 荣耀笔记本锐龙版和linux,在家办公的最佳利器:荣耀笔记本14锐龙版体验
- BeautifulSoup及爬取豆瓣评论
- C++STL算法 search你是我的半截的诗
- 微信表情图像代表什么意思_微信里的表情每个头像代表什么意思
- 计算机专业英语实战记录(整理了上千个相关单词)
- 计算机视觉最全专栏教程总结
- 架构师之路:粉丝关系链,10亿数据,如何设计?
热门文章
- Liunx系统 Ubuntu乌班图快速入门笔记
- 运筹学 知识点总结 (九)
- python中NumPy的矢量运算
- 2023年实习生应聘面经
- 电脑连接打印机显示服务器脱机怎么办,打印机提示脱机打印怎么办?Win系统电脑打印机提示脱机打印的解决方法...
- http无状态协议如何保存用户状态
- dokuwiki中文linux,linux下安装 Dokuwiki
- 如何用计算机逻辑描述,第一章 计算机底层逻辑之人有两项绝技
- 北京干细胞研究院“HOPE论坛” 首期 - AI+生命科学 月26日(星期五)14:00-17:30
- RFID无线射频技术与数字ID技术术语表-鸿顺捷科普篇