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

#1

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?

 

Options:

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

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

Version objectdb-2.6.6_05

#2
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]
#3

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

Reply