【轉】ResultSet內存溢出OutOfMemory問題

paul 13年前發布 | 4K 次閱讀

jdbc在操作oracle海量數據的時候用ResultSet獲取所有的返回數據出現內存溢出

處理:
出錯的原因是ResultSet用的是可滾動結果集,正常情況下ResultSet是指針指向數據庫的數據,本身是不存儲數據庫的數據的,默認情況下就算是提交的sql能查詢處上億條的數據也是不消耗內存的,但是如果用的是可滾動結果集的ResultSet情況就不一樣了,ORACLE 是不支持可滾動結果集的,那么我們用JDBC得到一個可滾動的結果集就是由JDBC自己支持的,也就是說結果集是要存放在內存中的,所以在海量數據的情況下也就是要消耗大量內存的,因此造成內存溢出也就是正常的了,所以如果是海量數據的話就不要用可滾動結果集就可以了

總結

前段時間用過這個,主要是結果性能問題,由于查詢的字段過多并且數據是海量,才使用這個便捷的方式,來求得結果集合的大小

結果導致多個用戶使用時,出現了內存溢出 。 ╮(╯▽╰)╭ 杯具,希望大家不要犯我這樣的錯誤

個人認為它只適合分頁的需求


 本文由用戶 paul 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!