在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 如何實現(xiàn)導(dǎo)出百萬條數(shù)據(jù)到EXCEL中不報OOM異常?

如何實現(xiàn)導(dǎo)出百萬條數(shù)據(jù)到EXCEL中不報OOM異常?

Java項目中使用POI導(dǎo)出百萬條數(shù)據(jù)到Excel中,但是會出現(xiàn)內(nèi)存溢出異常。

存在以下問題需要考慮

  1. POI導(dǎo)出條數(shù)限制6w+
  2. 數(shù)據(jù)量大的話會導(dǎo)致內(nèi)存溢出

現(xiàn)在的做法是每6w條數(shù)據(jù)做一次分割,創(chuàng)建一個新sheet去,但是這種做法特別慢

        List<List<Object>> result = new ArrayList<List<Object>>();
        List<Object> dataList = new ArrayList<Object>();
        if (resultList != null) {
            for (int i = 0; i < resultList.size(); i++) {
                Map<String, Object> map = getDataByClass(resultList.get(i));
                dataList.add(map);
                if (dataList.size() % 60000 == 0 && dataList.size() != 0) {
                    result.add(dataList);
                    dataList = new ArrayList<Object>();
                }
            }
            if(dataList.size()!=0){
                result.add(dataList);
            }
        }

希望大家能給點建議,想個比較好的方案解決這個難題~~

回答
編輯回答
不討囍

sheet不用創(chuàng)建新的,
查詢也不要一次查出來.

應(yīng)該是:
查6w,寫一次sheet,
查6w,寫一次sheet,
結(jié)束,發(fā)送

2017年10月24日 18:19
編輯回答
安若晴

速度沒有太好的辦法,內(nèi)存的話,設(shè)置Java的啟動參數(shù)-Xmx加大一些內(nèi)存試試。
然后我的建議是如果能接受csv的話,輸出csv吧,會快很多,連poi都不需要。

2017年4月17日 03:37