我需要尽快在 Tomcat 上的 HSQLDB 中插入 1.000.000 个条目,但是 64m(Tomcat 上的默认 MaxPermSize)对于此代码来说还不够,并且我得到“OutOfMemoryError”(我想插入默认设置)。
connection.setAutoCommit(false);
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO USER (firstName, secondName) VALUES(?,?)");
for (int i = 0; i < 1000000; i++) {
preparedStatement.setString(1, "firstName");
preparedStatement.setString(2, "secondName");
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
connection.commit();
我这样做了:http: //hsqldb.org/doc/2.0/guide/deployment-chapt.html#dec_bulk_operations。我设置了“SET FILES LOG FALSE”,但没有帮助。
- 有没有办法用 MaxPermSize=64m 插入 1.000.000 个条目?
- 为什么在这段代码上tomcat 会吃掉这么多内存?有 1.000.000 * 19(“firstName”+“secondName”的长度)*2(1 个符号上的字节)= ~40Mb。
- 为什么在内存表中插入比在缓存表中更快?难道我做错了什么 ?