使用executeBatch JDBC修补错误

时间:2015-11-17 13:13:41

标签: 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)
    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

在没有运气的情况下调用程序。 添加1024m对于18万条记录来说是好的,但它仍然会以290k的速度崩溃。我试图把它增加到4024米,但它没有帮助。

1 个答案:

答案 0 :(得分:0)

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

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

 sendBatch()

在Oracle中,您也可以设置

setExecuteBatch(blockSize)  

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