Java 堆内存有一个大问题 我正在尝试从 oracle 数据库 11g 迁移到 Access 文件 2007
这不是 65.000 条记录以下的问题,现在从那里... 应用程序抛出 java 堆异常,内存消耗增加超过 600m,CPU 使用率超过 50%,直到出现异常。
据我所知,rset.next() 没有获取所有数据(超过 50 列 x +65000 行),但一些记录 x 时间 我也尝试设置获取大小,但什么也没发生
rset.setFetchSize(1000);
我已经删除我的代码并显示输出,同样的错误
while (rset.next()) {
if (cont % 5000 == 0) {
System.out.println(cont + " proccesed and counting ...");
}
}
请不要给我使用 -xm(s, x)512、1024 等的答案... 这可以解决,而不是在我的特殊情况下(我试图将这个 xD 设置得更高,什么也没发生,我在 65.000 条记录时也遇到了同样的异常)
还有其他我可以尝试的选择吗??, 我想改变一些驱动程序配置或字符串连接?? 请帮忙
抱歉我的英语不好
这是我的连接:
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);
最佳答案
看起来问题在于您使用的是可滚动结果集,这会占用更多内存。
关于Java Heap Space Exception,数据量大,有什么解决办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349347/