Excel大數據量導出

  • 問題

在進行導出Excel的時候,因爲數據量十分大,致使流不能很快的寫入到Excel文件,使得流一直在內存中,致使內存佔用4個多G,嚴重影響服務狀態。數據結構

  • 方案

找到問題點是由於流或者Excel的數據結構(如XSSFWorkbook等)在內存停留時間太長。因此要麼快速處理數據,要麼就是將存儲位置改變。測試

  • 結果

最後咱們發現其實Excel已經提供了SXSSFWorkbook。他和XSSFWorkbook的優化點就在於他會將多餘的數據存儲在硬盤。優化

SXSSFWorkbook wb = new SXSSFWorkbook();

當實例化SXSSFWorkbook的時候,默認是當數據量大於100的時候,多餘的數據將不會存儲在內存中,他會存儲到硬盤中。debug

  • 最後

果真,JVM內存果真就佔用比較少,同時處理速度和使用XSSFWorkbook的時候簡直就是天和地!code

  • 總結

當碰到問題的時候,應該多測試代碼,debug將問題定位到最細的點。當點位到最細的點的時候才能更好地對有問題的點加入更合適的方案!內存

相關文章
相關標籤/搜索