關於SXSSFWorkbook匯出大批量資料的問題

2021-07-06 02:12:17 字數 954 閱讀 9475

前段時間做了乙個匯出大批量資料的功能,但是由於資料過多使用sxssfworkbook會出現記憶體溢位的問題,

主要有兩個地方容易溢位。

1.乙個是從資料看讀取資料到記憶體時溢位,基本資料超過20w或者2m時會溢位 這個時候改$

-xms1024m -xmx1024m -xx:permsize=512m -xx:maxpermsize=1024m 用處都是特別大

2.還有乙個就是在fileoutputstream os = new fileoutputstream(path);

wb.write(os);

時會報記憶體溢位的異常 

對於這兩個地方我是這麼處理的,

1.去資料時用的是分頁的方法分批取資料,然後寫入sheet中。這樣就不會報

2.在輸入的時候我查閱了poi的api發現一般是不能大批量資料輸入的,但是poi的2007支援大資料處理

workbook wb = new sxssfworkbook(5000);

在生成workbook 時給工作簿乙個記憶體資料存在條數,這樣一旦這個workbook 中資料量超過5000就會寫入到磁碟中,減少記憶體的使用量來提高速度和避免溢位。

/*** 建立乙個excel

* @param exportname

*/private void createexcel(string path, int allnum, calllogexporthistory call)

//迴圈讀取並寫入

for(int i = 1 ; i <= page; i++)

fileoutputstream os = new fileoutputstream(path);

wb.write(os);

//結束

os.flush();

os.close();

} catch (exception e) }

只發了乙個主體方法方便檢視

關於SXSSFWorkbook匯出大批量資料的問題

主要有兩個地方容易溢位。1.乙個是從資料看讀取資料到記憶體時溢位,基本資料超過20w或者2m時會溢位 這個時候改 xms1024m xmx1024m xx permsize 512m xx maxpermsize 1024m 用處都是特別大 2.還有乙個就是在fileoutputstream os ...

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...