加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java.lang.OutOfMemoryError:执行数百万次查询时出现Java堆空间

发布时间:2020-12-15 05:06:57 所属栏目:Java 来源:网络整理
导读:在我的应用程序中,我需要对 MySQL数据库执行数百万次查询.代码如下: for (int i=0; i num_rows ; i++) { String query2="select id from mytable where x='"+ y.get(i) "'"; Statement stmt2 = Con0.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet
在我的应用程序中,我需要对 MySQL数据库执行数百万次查询.代码如下:

for (int i=0; i< num_rows ; i++) {
   String query2="select id from mytable where x='"+ y.get(i) "'";              
   Statement stmt2 = Con0.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);     
   ResultSet rs2 = stmt2.executeQuery(query2);    
   ... // process result in rs2
   rs2.close(); 
}

其中num_rows约为200万.在600k循环之后,java报告错误并退出:

java.lang.OutOfMemoryError: Java heap space error.

我的代码有什么问题?我该如何避免这样的错误?

提前致谢!

解决方法

声明在这里不是一个好方法.请尝试以下代码:

PreparedStatement pre = Con0.prepareStatement("select id from mytable where x=?");

for (int i=0; i< num_rows ; i++) {
   pre.setString(1,y.get(i));
   ResultSet rs2 = pre.executeQuery();
   ... // process result in rs2
   rs2.close(); 
   pre.clearParameters();
}
pre.close();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读