新增导出功能发版后出现生产导出服务内存只增不减,最后导致内存溢出宕机,每次这种情况出现在月底,报表导出数据过多。后面查资料发现使用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内存溢出问题相关推荐

  1. 解决java poi海量数据导出内存溢出问题

    找了很多天的解决方法,一直被分页查询绕进去了,其实数据都能查出来的,真正卡的地方是ExcelExportUtil类下调错了方法. 最开始调用的方法是(标记的地方):  workbook = new H ...

  2. 超大数据量的xlsx格式的excel文件的读取和解析,解决了POI方式的内存溢出和性能问题

    在之前的博文< POI读取并解析xlsx格式的excel文件>中,在小数据量的情况下是可以轻松愉快的处理的,但是当excel文件的数据量达到百万级的时候, InputStream is = ...

  3. java poi 图片 内存溢出_解决java poi海量数据导出内存溢出问题

    找了很多天的解决方法,一直被分页查询绕进去了,其实数据都能查出来的,真正卡的地方是ExcelExportUtil类下调错了方法. 最开始调用的方法是(标记的地方):  workbook = new H ...

  4. POI导出数据内存溢出问题

    POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果也不是太好.3.8版本的POI新出来了SXSSFWorkbook,可以支持大数据量的操作,只是SXSSFWo ...

  5. java字符串换行符替换成段落标记_导出EXCEL换行符br为什么没有起到作用/poi导出excel内存溢出...

    导出EXCEL换行符br为什么没有起到作用 br是html中的换行符,在excel中并不起效,excel中换行是用alt enter强制插入的,或者用vba代码强制换行的. 导出EXCEL换行符为什么 ...

  6. POI解决读入Excel内存溢出

    POI读取excel表 下面是结构图 大批量数据读取的问题 在项目中遇到二十万行数据的excel用poi读取会内存溢出,一般方法是调大tomcat的内存,但是调到2048M还是会内存溢出报错 poi官 ...

  7. POI读写超大数据量Excel,解决超过几万行而导致内存溢出的问题(附源码)

    来源:cnblogs.com/swordfall/p/8298386.html 1. Excel2003与Excel2007 两个版本的最大行数和列数不同,2003版最大行数是65536行,最大列数是 ...

  8. Java 中如何解决 POI 读写 excel 几万行数据时内存溢出的问题?(附源码)

    >>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. Excel2003与Excel2007 两个版本 ...

  9. poi 上传Excel如何处理大文件,避免内存溢出

    使用poi做上传时,使用一般的形式,用户模式:new WorkBook()时,代码简单易懂,但是这种方式只能操作小文件,遇到大的文件就会报内存溢出的错.有问题就要解决,下面分享几种解决方式 第一种:只 ...

最新文章

  1. libevent-signal(2)
  2. mac平台反编译apk,获取源码,androidmanifest和资源文件
  3. 关于嵌入式学习随笔-6《NVIC中断优先级管理》
  4. Web前端——JavaScript(基本语法)
  5. cdf日上免税店_cdf会员购吐槽大会!从上海日上开始!
  6. 在Ubuntu 18.04上安装MongoDB
  7. 饿了么:日订单量超900万的架构设计及演进之路
  8. FMEA软件功能失效矩阵-交叉表 vs 树形矩阵
  9. js动画 无缝轮播 进度条 文字页面展示 div弹窗遮罩效果
  10. oracle round 没有0,oracle round函数的使用方法
  11. VBS QQ微信消息轰炸
  12. 类和对象4:类、类对象、实例对象
  13. 【redux------状态管理库】
  14. 荣耀笔记本锐龙版和linux,在家办公的最佳利器:荣耀笔记本14锐龙版体验
  15. BeautifulSoup及爬取豆瓣评论
  16. C++STL算法 search你是我的半截的诗
  17. 微信表情图像代表什么意思_微信里的表情每个头像代表什么意思
  18. 计算机专业英语实战记录(整理了上千个相关单词)
  19. 计算机视觉最全专栏教程总结
  20. 架构师之路:粉丝关系链,10亿数据,如何设计?

热门文章

  1. Liunx系统 Ubuntu乌班图快速入门笔记
  2. 运筹学 知识点总结 (九)
  3. python中NumPy的矢量运算
  4. 2023年实习生应聘面经
  5. 电脑连接打印机显示服务器脱机怎么办,打印机提示脱机打印怎么办?Win系统电脑打印机提示脱机打印的解决方法...
  6. http无状态协议如何保存用户状态
  7. dokuwiki中文linux,linux下安装 Dokuwiki
  8. 如何用计算机逻辑描述,第一章 计算机底层逻辑之人有两项绝技
  9. 北京干细胞研究院“HOPE论坛” 首期 - AI+生命科学 月26日(星期五)14:00-17:30
  10. RFID无线射频技术与数字ID技术术语表-鸿顺捷科普篇