我正在尝试使用 JDBC 从数据库创建转储文件。该文件的大小应约为 300 MB,包含 10 列中的 1.2 至 150 万条记录,但我在大约 25 万条时耗尽了内存。
我的问题是java是否将整个记录集存储在内存中?我已将记录集设置为只能向前读取,希望已转储的记录能够从内存中清除,但情况似乎并非如此。
任何帮助将不胜感激。
最佳答案
您应该在 Statement
对象上使用 setFetchSize
。以下示例一次仅从 ResultSet
中获取 1000 条记录:
Connection con = DriverManager.getConnection("jdbc:my_subprotocol:my_subname");
Statement stmt = con.createStatement();
stmt.setFetchSize(1000);
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table");
这是 Javadoc:
http://java.sun.com/javase/6/docs/api/java/sql/Statement.html#setFetchSize(int)
关于java - 如何使用 JDBC 在文本文件中写入大量数据而不耗尽内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1327380/