,所以我必須使用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