背景
mysql连接数据库的时候,需要从表中拖数据,如果数据量过大会导致服务内存溢出。会提示java.lang.OutOfMemoryError: Java heap space错误。
解决方案1
尝试1
ps=conn.con.prepareStatement("select * from bigTable");
ps.setFetchSize(1000);
使用setFetchSize(1000)指定获取接口大小
事实上,这种指定的方法是没有任何效果的,服务器还是会一次性取出所有数据放在客户端内存中,此时setFetchSize参数不起作用,当一条SQL返回数据量较大时可能会出现JVM OOM。
尝试2
使用setFetchSize(Integer.MIN_VALUE)
ps = connection.prepareStatement("select * from bigTable",
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
此