如果你要读取一个超大的表,使用下面的语句有可能会造成内存溢出:
Statement statement = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ResultSet rs = statement.executeQuery(sql);
这是因为如果不设置statement的fetchSize的话,mysql驱动默认会将数据全部载入到内存中,所以就会OutOfMemoryError了。
解决的方法有两种,在执行statement.executeQuery(sql);
添加下面两行中的一行,即可:
statement.setFetchSize(Integer.MIN_VALUE); ((com.mysql.jdbc.Statement)stat).enableStreamingResults();
内存溢出不好查,有时候有点莫名其妙了,编程愉快!