日期:2014-05-17  浏览次数:20753 次

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;
}

Linux 内存 服务器 jxl?内存 excel?高效

------解决方案--------------------
别的不敢多说
只是觉得读excel表其实是蛮耗内存的
------解决方案--------------------
耗时而已?不报错?
------解决方案--------------------
你可以检查 测试服务器 服务器测试的文件(excel)是否是本地文件,正式服务器 导入的文件是否在本地(还是网络文件)?对于传输而言,本地肯定比网络传输要快,因为本地传输无任何限制,而网络传输与带宽网速有关
------解决方案--------------------
正式环境数据量更大?
------解决方案--------------------
可能文件过大,使用POI使用流方式读取数据,很快 10万行无压力(Excel 2007)