50W数库EXCEL打开也有难度,建议导入CSV格式文件,或分多个文件。关于内存溢出,注意以下几点:1,分页分批从数据库里查询数据。2,注意变量的释放,特别是LIST和MAP之类的引用,如果定义成全局变量或静态变量就会很难释放。3,调大虚拟机内存大小。
java excel poi 大数据量50W 内存溢出
首先内存溢出的原因确定是Excel数据过大吗?如果是的话你可以考虑加大内存,或者可以把Excel按照sheet页逐个读取,每个sheet页最大65535条数据这样就避免了内存溢出的问题
假如你封装的读Excel的方法是readExcel(InputStream is)
{.....}
那么把方法改成readExcel(Sheet sheet){
直接读sheet内容
}
获取Excel的时候直接按照sheet页循环调用
for(...){
获取sheet页
readExcel(sheet);
执行持久化操作
System.gc();
}
如果不行的话只能加大内存了,因为可能当问件读到内存中时就已经内存溢出了2016-01-11
50W数库EXCEL打开也有难度,建议导入CSV格式文件,或分多个文件。
关于内存溢出,注意以下几点:
1,分页分批从数据库里查询数据。
2,注意变量的释放,特别是LIST和MAP之类的引用,如果定义成全局变量或静态变量就会很难释放。
3,调大虚拟机内存大小。2013-06-05
excel 最多只能6W 多行 你50W 肯定不行
要不就 每6W行分一个file
要不就用csv文件 这个support2013-06-05
原数据格式是什么,poi导出大量数据时占用内存较多。如果机器配置好,可以尝试加大jvm内存方法2013-06-05
5W一个文件,最后压缩下载,数据要分页读取,别一次全读出来。2013-06-05
Workbook workbook = new SXSSFWorkbook(1000);
poi有个机制 每次往内存中写1000条数据,这个1000你可以改的 尽量别大于10000条数据,写完1000条数据后再重新写,这样就不会内存溢出了。2015-12-21
解决内存溢出有好几种解决方法。多线程,加大内存等等。你不放代码不知道怎么优化。。。。2015-12-17