Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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 executeBatch JDBC的Heapsize错误_Java_Jdbc_Heap Memory - Fatal编程技术网

Java executeBatch JDBC的Heapsize错误

Java executeBatch JDBC的Heapsize错误,java,jdbc,heap-memory,Java,Jdbc,Heap Memory,我正在使用addBatch/executeBatch在Oracle数据库表中插入一些记录,但遇到以下heapsize错误 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.lang.reflect.Array.newArray(Native Method) at java.lang.reflect.Array.newInstance(Array.java:52) a

我正在使用addBatch/executeBatch在Oracle数据库表中插入一些记录,但遇到以下heapsize错误

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.lang.reflect.Array.newArray(Native Method)
    at java.lang.reflect.Array.newInstance(Array.java:52)
    at oracle.jdbc.driver.BufferCache.get(BufferCache.java:212)
    at oracle.jdbc.driver.PhysicalConnection.getCharBuffer(PhysicalConnection.java:7422)
    at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2826)
    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9973)
    at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:213)
我添加了以下参数

-Xms1024m -Xmx1024m
在没有运气的情况下调用程序时。
加上10.24亿对18万张唱片来说是不错的,但它在29万张唱片上不断崩溃。我试图将其增加到4024m,但没有效果。

对于内存参数的每一个设置,您都会找到一个失败的记录编号

将行划分为可管理大小的块,并在添加每个块后发布

 sendBatch()
在Oracle中,您还可以设置

setExecuteBatch(blockSize)  

其中blockSize是每次往返中要传递的行数。

您是否尝试过Runtime.getRuntime.totalMemory;要查找JVM的总内存,不要一次执行整个批处理,因为在执行所有语句之前,所有数据都需要保存在内存中;收集足够多的数据,例如100到1000之间的数据,然后执行。感谢您的反馈,但我非常感谢您的详细说明,因为我是JAVA和JDBC的新手。请查看有关此主题的一些教程,例如