求java的poi导出大数据内存溢出解决方法。。数据量在50W左右。
public void test(){
for(int i=0;i<20;i++){
addData();
}
}
public void addData() {
FileInputStream is
XSSFWorkbook wb
SXSSFWorkbook swb
Sheet sheet1 = swb.getSheet("Sheet0");
for(int i =0;i<1000;i++){
Row row = sheet1.createRow(sheet1.getLastRowNum() + 1);
row.setHeightInPoints((short) 12);row.createCell(0).setCellValue("20120710");
row.createCell(1).setCellValue("23");row.createCell(2).setCellValue("43");
wb.write(os);
}
2007格式的就可以写到100W啊。
public void test(){
for(int i=0;i<20;i++){
addData();
}
}
我没有读数据库的数据,就这样存都报溢出。。。。
你是直接JDBC load出来的 还是用了 类似toplink的 工具
如果用了的话 可能是50W数据 直接load死它了 分批load 数据
如果直接JDBC的话: 就分save。一次那么都,估计内存不够