itext导出报表防止内存溢出

来源:互联网 发布:免费电子相册制作软件 编辑:程序博客网 时间:2024/05/01 17:44
int _MAX_ROWS = 1000;//最大行数,之后清理
int row_count = 0;//初始值
if (++row_count % _MAX_ROWS == 0) {
 
            System.out.println("row_count % _MAX_ROWS="+ row_count % _MAX_ROWS);
 


            // add table to Document
             document.add(datatable);
 


            // delete _MAX_ROWS from table to free memory
             datatable.deleteBodyRows();
 


           // let iText manage when table header written
 
           //datatable.setSkipFirstHeader(true);    
}


int fregmentSize = 1000;// 释放内存的行号
  int k = 0;
 
  for (int i = 0, h = bodys.size(); i < h; i++) {
 
     if (i != 0 && i % fregmentSize == fregmentSize - 1) {
 
            System.out.println("第[ " + (i + 1) + " ]行进行内存释放 " + ((k++) + 1) + " th");
 
            document.add(datatable);
 
            datatable.deleteBodyRows();
 
            datatable.setSkipFirstHeader(true);
 
      }


       //.... 表格处理
}