一、业务背景
这是之前的一个case,需求是这样的:在excel导出的时候,实现列的自适应宽度。(使用的excel处理包是poi-3.9.jar)
二、实现版本一(有young gc 问题)
通过List往sheet里面设置值的时候,每设置一个单元格的值就设置一下自适应宽度,代码如下:
这样实现,已经满足了需求。但是我习惯在IDE里面打印gc信息,当我run起来之后,young gc一直在刷屏。就增加了90行一行代码,结果导出时间从0.5s 到 200 s,响应时间超慢,发现gc log中eden 区回收特别频繁
同时,看了眼线程状态,当时线程一直处于运行状态,然后dump线程找到该线程对应的堆栈,找到出问题的代码,结果就是因为新加的一行。怀疑产生了大对象,但是当时以为是sheet对象,结果跟进去后发现
产生了数组对象,然后使用profier查看内存,结果是int[] 140m的实例,正常情况只有几百int[],所以修改了代码
三、实现版本二
首先去掉90行的代码,接着,填充完数据后,取表头第一行,然后给第一行设置自适应宽度就ok了
fillExcelContent(sheet, lt, startNum); //设置自适应宽度 Row r = sheet.getRow(0); for (int i = 0; i < r.getPhysicalNumberOfCells(); i++) { sheet.autoSizeColumn(i); }
总结:这个case是之前很早发生的,在里面主要记录一下这个处理过程
相关推荐
excel导出
java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入
Excel导出数据 Excel导出数据 Excel导出数据 Excel导出数据 Excel导出数据
java Excel导出 Excel数据处理
php excel导出 导入php excel导出 导入php excel导出 导入php excel导出 导入
需要使用JAVA 做EXCEL导出的同学,有问题尽管私信
导出Excel功能,导出Excel功能,导出Excel功能,导出Excel功能
excel导出,支持前台和后台导出,并用struts2,简洁代码
excel导出 脚本处理excel导出 脚本处理excel导出 脚本处理
excel导出类,可以直接使用类来实现excel导出,不回出现excel扩展格式错误问题!
自己写一个可直接导出List<Object>数据的Excel工具类,使用起来很方便。
用于考核的系统,导出EXCEL导出EXCEL
项目范围:纯前端; 项目内容:luckysheet在线编辑Excel导出,Excel文件导入; 项目运行:直接浏览器运行index.html
Excel导入导出 Excel导入 Excel导出
java excel导出数据
Excel导出多层表头,Excel导出,Excel单元格合并。
Excel导出百万级数据
nio的excel导出
使用注解方式,在实体属性的get方法上添加注解,实现简单的excel表格导出功能
java web导入导出Excel的相关代码,java web导入导出Excel的相关代码,java web导入导出Excel的相关代码,