linux jxl 严重消耗内存,造成整个系统卡死状态
有了解或遇到过的童鞋请指教哈。。。
jxl关于内存消耗的一些问题
现项目中有用jxl做数据导入操作,但是导入时发现整个系统不稳定,只要进行导入操作时就会出现整个系统运行造成堵塞卡死现象,这个现在维持在导入完成之后才恢复正常!
后通过打印日志,发现两个地方验证耗时,
1、workbook = Workbook.getWorkbook(new FileInputStream(path)); 就这一句代码,正式服务器会耗时5~8秒不等;
2、workbook.close(); 关闭 workbook用时:9~12秒不等;
正式服务器是linux, 但是在测试服务器测试(同正式服务器环境一致,就防火墙不一样)并未发现此问题, 本地windows环境也未发现此问题,这两个地方用时都大约在1秒左右!
为什么正式服务器会耗时这么严重?? 导入时通过内存监听查看内存消耗一下猛涨很多。。。
有了解或遇到过的童鞋请指教哈。。。 估计大概跟什么有影响, 在这先谢谢了!
部分代码:
long getd = System.currentTimeMillis();
workbook = Workbook.getWorkbook(new FileInputStream(path));// 耗时严重 5~8秒不等;
Sheet sheet = workbook.getSheet(0);
int rows=sheet.getRows();
for (int i = 1; i < rows; i++) {
//读取exce保存至 集合中
}
......
if(workbook!=null){
workbook.close();//关闭操作, 耗时严重 9~12秒不等;
workbook=null;
}
------解决方案--------------------别的不敢多说
只是觉得读excel表其实是蛮耗内存的
------解决方案--------------------耗时而已?不报错?
------解决方案--------------------你可以检查 测试服务器 服务器测试的文件(excel)是否是本地文件,正式服务器 导入的文件是否在本地(还是网络文件)?对于传输而言,本地肯定比网络传输要快,因为本地传输无任何限制,而网络传输与带宽网速有关
------解决方案--------------------正式环境数据量更大?
------解决方案--------------------可能文件过大,使用POI使用流方式读取数据,很快 10万行无压力(Excel 2007)