Who should use it?
Because there are no restrictions on when and how often the BusinessDataAliasCache is loaded, if a large number of unarchived snapshots are present, an OutOfMemory condition can result. The issue here specifically arises due to the amount of business data per snapshot consuming a large amount of heap. As a result, this fix prevents data from non-active snapshots from being read and provides an upper limit on the amount of heap consumed by business data per snapshot.
In the heap dump that is generated from an OutOfMemory condition related to this issue, I would expect to see the following in Heap Analyzer output:
One instance of "com.lombardisoftware.server.ejb.persistence.versioning.BranchManager" loaded by "com.ibm.oti.vm.BootstrapClassLoader @ 0x40f91a48" occupies 1,944,715,592 (90.52%) bytes.
The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment" loaded by "com.ibm.oti.vm.BootstrapClassLoader @ 0x40f91a48".
com.ibm.oti.vm.BootstrapClassLoader @ 0x40f91a48
The key being a large portion of heap accumulated in "com.lombardisoftware.server.ejb.persistence.versioning.BranchManager."