原因:mysql會將查詢到的記錄全部傳送到java端儲存,而JVM中如果98%的時間是用於GC,且可用的Heap size 不足2%的時候將丟擲此異常資訊。JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heap size的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。
處理:
Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
ResultSet rs=stmt.executeQuery(sql);
或者資料庫連線語句加上:useCursorFetch=true&defaultFetchSize=100