ObjectDB ObjectDB

Heap Limit reached although the option 'objectdb.temp.page-file' is activated


We persisted many entities in a transaction, unfortunately the heap reached its limit at any time although the flush and the GC were invoked regularly.

The attachments show the memory heap dump of the biggest consumer.

Which objects you would actually expect to remove by the garbage collector?

Why the option objectdb.temp.page-file does not perform?



<temp path="$temp" threshold="512mb" />

System.setProperty("objectdb.temp.page-file", "true");

Version objectdb-2.6.6_05

Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.objectdb.o.PRU.X(PRU.java:117) ~[na:na]
at com.objectdb.o.VLV.n(VLV.java:192) ~[na:na]
at com.objectdb.o.EVC.l(EVC.java:113) ~[na:na]
at com.objectdb.o.STA.U(STA.java:536) ~[na:na]
at com.objectdb.o.STM.E(STM.java:431) ~[na:na]
at com.objectdb.o.OBM.bP(OBM.java:924) ~[na:na]
at com.objectdb.jdo.PMImpl.bP(PMImpl.java:2267) ~[na:na]
at com.objectdb.o.OBM.bO(OBM.java:835) ~[na:na]
at com.objectdb.o.OBM.flush(OBM.java:765) ~[na:na]

The heap dump shows millions of entity objects in memory (NormalizedAccessPathImpl, CoverageCodeHarnessInterfaceObjectImpl, etc.).

It doesn't seem related to objectdb.temp.page-file, which may work and move modified database pages (after flush) to a temporary file, but is not related to entity objects hold in memory.

Please check for GC roots to the entity objects in order to see were are the strong references that hold them in memory.

ObjectDB Support


To post on this website please sign in.