【转】ResultSet内存溢出OutOfMemory问题

14年前
jdbc在操作oracle海量数据的时候用ResultSet获取所有的返回数据出现内存溢出

处理:
出错的原因是ResultSet用的是可滚动结果集,正常情况下ResultSet是指针指向数据库的数据,本身是不存储数据库的数据的,默认情况下就算是提交的sql能查询处上亿条的数据也是不消耗内存的,但是如果用的是可滚动结果集的ResultSet情况就不一样了,ORACLE 是不支持可滚动结果集的,那么我们用JDBC得到一个可滚动的结果集就是由JDBC自己支持的,也就是说结果集是要存放在内存中的,所以在海量数据的情况下也就是要消耗大量内存的,因此造成内存溢出也就是正常的了,所以如果是海量数据的话就不要用可滚动结果集就可以了

总结

前段时间用过这个,主要是结果性能问题,由于查询的字段过多并且数据是海量,才使用这个便捷的方式,来求得结果集合的大小

结果导致多个用户使用时,出现了内存溢出 。 ╮(╯▽╰)╭ 杯具,希望大家不要犯我这样的错误

个人认为它只适合分页的需求