如果你要读取一个超大的表,使用下面的语句有可能会造成内存溢出:
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();
内存溢出不好查,有时候有点莫名其妙了,编程愉快!
收藏
0人收藏
- 2014-05-26 22:03:27mysql存储过程返回resultset by 玉开Sir
- 2013-06-05 13:21:25python 使用MySQLdb连接mysql by 玉开Sir
- 2014-03-09 19:37:29JDBC连接MySql和Sql Server代码 by 逆风扬
- 2012-11-28 22:20:36java使用JDBC连接MYSQL数据库 by 0晓风残月0
- 2013-05-13 09:50:14Java JDBC连接字符串汇总(MySQL,Postgres,SQL Server和DB2) by 金背二郎
- 2012-11-08 09:50:08备份压缩mysql 数据库 by clt
- 2012-12-02 11:33:16MySQL的if,case语句使用总结 by aiheng1988
- 2012-12-12 13:50:36Hibernate实现mysql数据库limit查询方法 by firedtoad
- 2012-12-29 17:20:26Mysql存储过程中使用游标示例 by JoanneTou
- 2013-01-09 22:15:13java连接access数据库说明以及示例代码 by 甄码农
- 2018-12-26 11:42:30java B2B2C springmvc mybatis仿淘宝电子商城系统-整合企业架构的技术点 by it绿萝
相关聚客文章
- DB大量出现select @@session.tx_read_only
- Stream ResultSet实现原理与应用实践
- jdbc使用DataSource连接mysql,postgresql,oracle的代码
- JDBC Interview Questions and Answers
- Java web开发中文乱码问题
- JDBC 学习
- MySQL JDBC中autoReconnectForPools的用途
- java jdbc 将mysql表转换成protobuf
- ElasticSearch5+logstash的logstash-input-jdbc实现mysql
- Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记
- Why use PreparedStatement in Java JDBC
- jdbc使用DataSource连接mysql,postgresql,oracle的代码