Currently we instantiate IdentityHashMap while creating an instance of AllocationManager which is in turn is part of BufferLedger
By default IdentityHashMap allocates an array of 64 objects which is 272 bytes of heap from the start. In reality a lot of ArrowBuf(s) will not need that many entries in the map, since they want share BufferAllocators with many other BufferLedgers.
Suggestion is to come up with different collection to save heap w/o sacrificing much of the performance (if any).
I have a suggestion in mind that I will share via a doc. later today