我正在尝试使用JDBC从数据库创建转储文件.该文件应该是大约300 MB的大小,包含十列中的1.2到1.5百万条记录,但我的内存耗尽大约25万.
我的问题是java将整个记录集存储在内存中吗?我已经将记录集设置为只能向前读取,希望已经转储的记录将从内存中清除,但似乎并非如此.
任何帮助将不胜感激.
你应该setFetchSize在Statement对象上使用.以下示例将仅从以下位置一次获取1000条记录ResultSet:
Connection con = DriverManager.getConnection("jdbc:my_subprotocol:my_subname");
Statement stmt = con.createStatement();
stmt.setFetchSize(1000);
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table");
Run Code Online (Sandbox Code Playgroud)
这是Javadoc:
http://java.sun.com/javase/6/docs/api/java/sql/Statement.html#setFetchSize(int)