,所以我必须使用JDBC的Java代码使用事先准备好的声明,看起来有点像这样将数据插入到PostgreSQL数据库:如何测试,如果一个PreparedStatement将要耗尽内存
PreparedStatement statement = // prep statement
for (int value: values) {
statement.setInt(1, value);
statement.addBatch();
}
statement.executeBatch();
的问题是,我偶尔会碰到例外java.lang.OutOfMemoryError: Java heap space
。我环顾四周,但我找不到任何东西;我如何测试语句即将耗尽内存,以便可以执行批处理。类似这样的:
PreparedStatement statement = // prep statement
for (int value: values) {
statement.setInt(1, value);
statement.addBatch();
if (statement.currentSize() + sizeof(int) > statement.mazSize()) {
statement.executeBatch();
}
}
statement.executeBatch();
感谢您的任何帮助。
您是否关闭了您创建的所有资源 - 准备好的语句,结果集等? – 2014-10-09 15:53:49
当我批处理语句时,我看看内存消耗并在'%x == 0'后面刷新它们。你可以监视空闲的堆空间,但我只是懒得这样做。 – Hannes 2014-10-09 15:54:17
使用较小的批量大小说500并迭代执行。 – 2014-10-09 15:55:51