By default the page limit parameter is set to -1, which means to assign 1/3 of Heap space to the LedgerCache. Each LedgerEntryPage is then allocating the memory outside the heap (ByteBuffer.allocateDirect()).
This makes BK to use more memory than the -XmxNN configured setting. Is there any particular reason for the LedgerEntryPage buffer to be allocated outside the java heap? Could that be changed?