我使用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米,但它没有帮助。
答案 0 :(得分:0)
对于内存参数的每个设置,您都会找到一个失败的记录号。
将行中的行划分为可管理的大小,并在添加每个块后发出
sendBatch()
在Oracle中,您也可以设置
setExecuteBatch(blockSize)
其中blockSize
是每次往返中传递的行数。