我有一个关于Java堆内存的问题。我正在尝试从Oracle数据库11g迁移到Access文件2007。
在记录数低于65,000条时,这不是问题。但在那之后,应用程序会抛出Java堆异常,内存消耗超过600m,CPU使用率超过50%,直到发生异常。
据我所知,rset.next()不会获取所有数据(超过50列x +65000行),而只会获取一些记录x次。我已经尝试设置fetch size,但没有任何效果。
我已经删除了代码并显示输出,但仍然出现相同的错误。
请不要给我使用“-xm(s, x)512、1024等”作为答案...... 虽然这可以解决问题,但在我的情况下没有用(我甚至尝试过将其设置得更高,xD,仍然无效,在65000个记录时也会出现相同的异常)。
还有其他选项可以尝试吗?也许可以更改一些驱动程序配置或连接字符串吗? 请帮忙。
抱歉我的英语不好。
这是我的连接:
在记录数低于65,000条时,这不是问题。但在那之后,应用程序会抛出Java堆异常,内存消耗超过600m,CPU使用率超过50%,直到发生异常。
据我所知,rset.next()不会获取所有数据(超过50列x +65000行),而只会获取一些记录x次。我已经尝试设置fetch size,但没有任何效果。
rset.setFetchSize(1000);
我已经删除了代码并显示输出,但仍然出现相同的错误。
while (rset.next()) {
if (cont % 5000 == 0) {
System.out.println(cont + " proccesed and counting ...");
}
}
请不要给我使用“-xm(s, x)512、1024等”作为答案...... 虽然这可以解决问题,但在我的情况下没有用(我甚至尝试过将其设置得更高,xD,仍然无效,在65000个记录时也会出现相同的异常)。
还有其他选项可以尝试吗?也许可以更改一些驱动程序配置或连接字符串吗? 请帮忙。
抱歉我的英语不好。
这是我的连接:
Class.forName("oracle.jdbc.driver.OracleDriver");
this.conn = DriverManager.getConnection("jdbc:oracle:thin:@" + getServer() + ":1521:orcl", getUser(), getPassword());
this.stmt = this.conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_UPDATABLE);