0
我在一個ArrayList中有57,000,000個字符串,我想要插入到HSQLDB中。但我總是用盡內存並得到一個「java.lang.OutOfMemoryError:Java堆空間」或「OutOfMemoryError:超出GC開銷限制」錯誤在過程中。Java HSQLDB - 批量批量插入:OutOfMemoryError:超出GC開銷限制
我試過任何解決方案,建議here。
DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
String now = df.format(new Date());
long iteration = 0;
int i, size, totalSize;
size = totalSize = values.size();
PreparedStatement statement = connection.prepareStatement("INSERT INTO primes (P_VALUE, DATE_FOUND) VALUES (?, ?);");
while (size > 0) {
for (i = 0; i < 1000000 && i < size; i++) {
iteration++;
statement.setString(1, values.get(i));
statement.setString(2, now);
statement.addBatch();
}
values = values.subList(i, size);
size = values.size();
statement.executeBatch();
}
statement.closeOnCompletion();
我很確定問題是與Java語句連接,因爲更改for-loop條件並不會改變它。
我試圖
- 更小和更大的批量
- 每則ExecuteBatch()