解决Java导入excel大量数据出现内存溢出的问题

  

系统要求导入40万条excel数据,采用poi方式,服务器出现内存溢出情况。

  

由于HSSFWorkbook工作簿=new HSSFWorkbook(路径)一次性将excel负载到内存中导致内存不够。

  

故采用读取csv格式。由于csv的数据以x1, x2, x3形成,类似读取txt文档。

        私人BufferedReader破冰船;/* *   *执行文件入口   */公共空间execute () {   尝试{   如果(! path.endsWith (. csv)) {   logger.info(“- - - - - -该文件不是以CSV文件,请上传正确的文件格式- - - - - -”);   返回;   }   长时间的开始时间=System.currentTimeMillis ();   logger.info(“- - - - - -开始执行定时任务,时间=" +开始时间);   readCSV(路径);   长endTime=System.currentTimeMillis ();   logger.info(“- - - - - -结束定时任务,时间=" + endTime +”——耗时="   + (endTime -开始时间));   }捕捉(异常e) {   e.printStackTrace ();   }   }/* *   *读取csv并处理数据   * @param路径   * @throws例外   */私人空间readCSV (String路径){抛出异常   文件文件=新文件(路径);   尝试{   破冰船=new BufferedReader(新InputStreamReader(新FileInputStream(文件)," gbk "));   字符串行=" ";//忽略第一行标题   for (int i=0;我& lt;1;我+ +){   行=bReader.readLine ();   }   在((=bReader.readLine行())!=null) {   如果(line.trim () !=" ") {//分割开来的即是对应的每个单元格,注意空的情况   String[]结果=line.split (", ");      }   }   }   最后}{   如果(破冰船!=null) {   bReader.close ();   }   }   }      

以上这篇解决Java导入excel大量数据出现内存溢出的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

解决Java导入excel大量数据出现内存溢出的问题