返回顶部

收藏

jdbc statement.executeQuery(sql) 造成内存溢出的解决方法

更多

如果你要读取一个超大的表,使用下面的语句有可能会造成内存溢出:

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();

内存溢出不好查,有时候有点莫名其妙了,编程愉快!

标签:mysql,jdbc,内存溢出

收藏

0人收藏

支持

1

反对

0

发表评论