我有一台将大约 502,000,000 行插入 BDB JE 的机器。键和值的示例是:
juhnegferseS0004-47-19332 39694.290336
所有键和值的长度大致相同。JVM 使用以下参数启动:
-Xmx9G -Xms9G -XX:+UseConcMarkSweepGC -XX:NewSize=1024m -server
但是,当它达到约 50,000,000 行时,JVM 被“杀死”(我只是收到“被杀死”的消息,不知道它是如何/被谁杀死的)。我只是猜测它会尝试运行垃圾收集,然后它无法释放足够的内存或其他东西。但是,有了这么多的 -Xmx,我想它应该没有任何问题。
我使用 deferredWrites 并且日志文件的大小设置为 100MB。从 DPL 切换到 Base API 没有任何区别。
我正在使用具有 12GB RAM 的 JDK 6.0 和 SUSE x86_64。还有其他进程需要剩余的 RAM,因此实际上不能为此插入任务分配超过 9GB 的空间。
虚拟机:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
任何解决此问题的提示表示赞赏。