Java executeBatch JDBC的Heapsize错误
我正在使用addBatch/executeBatch在Oracle数据库表中插入一些记录,但遇到以下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
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的新手。请查看有关此主题的一些教程,例如