当前页面: 开发资料首页 → J2SE 专题 → 100分求解决方案:用POI的HSSF读取excel的问题:数据条数(5000)多的时候,会产生outofmemory错误~
100分求解决方案:用POI的HSSF读取excel的问题:数据条数(5000)多的时候,会产生outofmemory错误~
摘要: 100分求解决方案:用POI的HSSF读取excel的问题:数据条数(5000)多的时候,会产生outofmemory错误~
和rester214 (呆呆中) 问题略不一样,
他的是写的问题,我在读的时候就OOM了,就这么两句
java.io.File file = new java.io.File(-#34;xxx.xls-#34;);
fs = new POIFSFileSystem(new FileInputStream(file));
HSSFWorkbook wb = new HSSFWorkbook(fs) //在这就溢出了,
我的文件才5000行
有谁知道,对于5000行的数据,如果不这么做,能够使用别的方法绕过去吗?
你一行记录是不是很多字段内容么?
你不一定要先全部读入内存,你可以一段一段的读
设置JVM的初始,内容,大一点试试..
在Eclipse中,,修改eclipse.ini
Tomcat中: 增加环境变量....
-Xms256m -Xmx512m
不可以new多了对象,你可以公用一个对象,我也犯过这个错误,你检查一下new 了多少个对象,重点是循环里面的
我只new了一个对象啊,而且我没法分批读啊,因为 你们看到的HSSFWorkbook的参数只能是一个完整的POIFSFileSystem对象
sundeveloper(51TTUP) 兄的意见基本上是对的,
开始的时候,我也这么设置的,结果不行,这个设置是Eclipse启动以后Eclise本身做为一个java进程所需要的内存。
最后我是在命令行下面,直接运行的java -Xmx256m实现的。
如果不加参数,我看java本身默认的内存似乎在80M左右就溢出了。