`
csstome
  • 浏览: 1476211 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jdbc查询超大数据集内存溢出

阅读更多

今天使用jdbc的PreparedStatement查询语句如下:

 

  1. Class.forName( "com.mysql.jdbc.Driver" );  
  2.         String url = "jdbc:mysql://localhost:3306/translate?characterEncoding=utf8" ;  
  3.         String sql = "select id, title, search_title, content from article" ;  
  4.         Connection conn = DriverManager.getConnection(url, "root" "123456" );  
  5.         PreparedStatement ps = conn.prepareStatement(sql);  
  6.         ResultSet rs = ps.executeQuery();  
  7.         rs.close();  
  8.         ps.close();  
  9.         conn.close();  

总是报这个错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
 at com.mysql.jdbc.Buffer.getBytes(Buffer.java:198)
 at com.mysql.jdbc.Buffer.readLenByteArray(Buffer.java:318)
 at com.mysql.jdbc.MysqlIO.extractNativeEncodedColumn(MysqlIO.java:3567)
 at com.mysql.jdbc.MysqlIO.unpackBinaryResultSetRow(MysqlIO.java:3483)
 at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1391)
 at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2369)
 at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:451)
 at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2076)
 at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1451)
 at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1314)
 at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:740)
 at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1467)

但是从网上找到的doc说,默认情况下不会出这个问题的,因为java回自动的优化不会导致内存溢出的。百思不得其解。

后来无意找到一个介绍,这么来做

就是给url连接字符串添加2个属性即可:useCursorFetch=true&defaultFetchSize=100

分享到:
评论
1 楼 isaiahzhong 2012-11-06  
           defaultFetchSize这个意思是说一次性取多少条数据是吗?好像hibernate里面有一个抓取策略,就是用来控制取多少条数据

相关推荐

    DBKING使用指南

    再比如LOB字段的处理,可以直接通过增、删、改、查等接口处理,遇到较大的LOB,也可以用流的方式处理,避免内存溢出的问题。再比如获取数据库序列,我们采用了统一的算法,不同的数据库都使用同一个接口来获取序列,...

    MySQL 5.1中文手冊

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    MySQL5.1参考手册官方简体中文版

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    mysql官方中文参考手册

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    MYSQL中文手册

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 ...

    MySQL 5.1参考手册中文版

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11...

    MySQL 5.1参考手册

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    java面试题

    答:运行时异常时(JVM)java虚拟机在运行过程中发生的问题,比如:内存溢出等问题。这类异常没法要求程序员去一一捕获并抛出,一般异常是Java类库或程序员自己写的代码发生的错误,这类异常可以由我们去一一捕获并...

    MySQL 5.1参考手册 (中文版)

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    JAVA面试题最全集

    方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...

    mysql5.1中文手册

    数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区...

    MySQL中文参考手册

    * 0 译者序 * 1 MySQL的一般的信息 o 1.1 什么是MySQL? o 1.2 关于本手册 + 1.2.1 本手册中使用的约定 o 1.3 MySQL的历史 o 1.4 MySQL的主要特征 o 1.5 MySQL稳定性? o 1.6 顺应2000年 ...

    MYSQL

    10.2.7 MySQL 怎样使用内存 10.2.8 MySQL 怎样锁定数据库表 10.2.9 数据库表级锁定的问题 10.3 使你的数据尽可能小 10.4 MySQL 索引的使用 10.5 存取或更新数据的查询速度 10.5.1 估计...

    MySQL 5.1官方简体中文参考手册

    5.10.1. 数据和排序用字符集 http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/(第 5/24 页)2006-11-02 19:12:13 MySQL 5.1 Reference Manual 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. ...

    MySQL中文参考手册.chm

    10.2.7 MySQL 怎样使用内存 10.2.8 MySQL 怎样锁定数据库表 10.2.9 数据库表级锁定的问题 10.3 使你的数据尽可能小 10.4 MySQL 索引的使用 10.5 存取或更新数据的查询速度 ...

Global site tag (gtag.js) - Google Analytics