http://www.iteye.com/topic/199061
正在做一个Excel import的东东,不知道论坛上用POI的朋友有没有考虑过大数据量Excel文件导入导致内存溢出的问题
HSSFWorkbook wb=new HSSFWorkbook(new FileInputStream(fileName));
从本地得到的FileInputStream为HSSFWorkbook初始化是一次性全部加在到内存中(每行不到10个字段,总共不到20000行数据),这一句就直接抛出OOM异常
引用
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at org.apache.poi.hssf.usermodel.HSSFRow.createCellFromRecord(HSSFRow.java:181)
at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:182)
at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:123)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:264)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:168)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:297)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:278)
at javaapplication4.Main.main(Main.java:30)
提问之前有查过相关贴,看到有的兄弟能处理1x万行的数据导入,不知道如何做到的.加载之前将大excel拆分成若干小文件吗?如何办到?
===============
内存加大点 -Xms?
默认只有64M
=======
kayoo 写道
内存加大点 -Xms?
默认只有64M
默认只有64M
的确是这样
用java -Xms512m -Xmx1204m -jar xxx.jar
6万行的数据(Excel文件最大6.5w行per sheet)不到2秒都可以读入内存