Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java堆空间异常,数据量大,有解决方案吗?_Java_Oracle_Ms Access_Heap Memory - Fatal编程技术网

Java堆空间异常,数据量大,有解决方案吗?

Java堆空间异常,数据量大,有解决方案吗?,java,oracle,ms-access,heap-memory,Java,Oracle,Ms Access,Heap Memory,java堆内存有一个小问题 我正在尝试从oracle database 11g迁移到access file 2007 这不是一个低于65000条记录的问题,从现在开始。。。 应用程序抛出java堆异常,在执行该异常之前,内存消耗将增加超过6亿,CPU使用率将超过50% 据我所知,rset.next()并没有获得所有数据(超过50列x+65000行),但有些记录了x次 我也试着设置取数大小,但什么也没发生 rset.setFetchSize(1000); 我已经删除了我的代码并显示了输出,同样的

java堆内存有一个小问题 我正在尝试从oracle database 11g迁移到access file 2007

这不是一个低于65000条记录的问题,从现在开始。。。 应用程序抛出java堆异常,在执行该异常之前,内存消耗将增加超过6亿,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);

看起来问题在于您使用的是可滚动的结果集,这将占用更多内存

我们可以看到您的错误消息吗?MS-ACCESS标签在这个问题上做了什么?我没有看到关于Access或Jet/ACE数据库引擎的任何信息。是的,我删除了这个问题的代码,只做了oracle查询,让您知道这不是访问问题连接有没有任何方法可以拆分结果集,这样您就不会一次返回这么多记录?是的,我也这么认为,但是meaby我会创建一个临时表来完成这项工作,我需要在一次点击中生成一个MSAccess数据库,以便我的客户下载它。但是怎么做呢??thx适用于所有客户answers@ErVeY:如果逐行处理结果集,则应使用
仅向前键入
而不是
滚动滚动
。我认为
TYPE\u SCROLL\u INSENSITIVE
的实现是在获取行时缓存行,导致内存溢出(因为所有Oracle游标都只在数据库端向前移动,客户端必须通过客户端缓存实现可滚动功能)Thx Vincent我会尝试一下,自从我提出这个问题以来,我已经与世界断开了联系,所以我无法跟上节奏,很抱歉,我只切换到了类型_forward_,现在可以很好地使用thx和Vincent和JZD来获得答案=D