ResultSet內(nèi)存溢出OutOfMemory問題
錯誤信息如下:
jdbc在操作oracle海量數(shù)據(jù)的時候用ResultSet獲取所有的返回數(shù)據(jù)出現(xiàn)內(nèi)存溢出
處理:
出錯的原因是ResultSet用的是可滾動結(jié)果集,正常情況下ResultSet是指針指向數(shù)據(jù)庫的數(shù)據(jù),本身是不存儲數(shù)據(jù)庫的數(shù)據(jù)的,默認(rèn)情況下就算是提交的sql能查詢處上億條的數(shù)據(jù)也是不消耗內(nèi)存的,但是如果用的是可滾動結(jié)果集的ResultSet情況就不一樣了,ORACLE 是不支持可滾動結(jié)果集的,那么我們用JDBC得到一個可滾動的結(jié)果集就是由JDBC自己支持的,也就是說結(jié)果集是要存放在內(nèi)存中的,所以在海量數(shù)據(jù)的情況下也就是要消耗大量內(nèi)存的,因此造成內(nèi)存溢出也就是正常的了,所以如果是海量數(shù)據(jù)的話就不要用可滾動結(jié)果集就可以了。