繁体   English   中英

executeBatch JDBC的堆大小错误

[英]Heapsize error with executeBatch JDBC

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

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崩溃。 我试图将其增加到4024m,但没有帮助。

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

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

 sendBatch()

在Oracle中,您还可以设置

setExecuteBatch(blockSize)  

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM