From a functional perspective, all banks are rooted at the prime bank. For convenience of internal implementation, there is a co-equal internal bank known as bank0 that is used by the space bank itself to allocate internal storage. The most common operations requested of a space bank are the allocate and deallocate operations. The allocate operation is on the fault handling path for heap and stack growth. Since heap growth is a performance critical operation for many programs, the allocate operation is especially time critical.
Every bank retains a list of the objects that it has allocated.
To allow all of the objects allocated by the space bank to be rescinded when the bank is destroyed. They can be inherited upwards to the parent of the destroyed bank. The second provides a way to do speculative allocation of objects where the result once constructed is to be retained, but allows the interim construct to be easily discarded if the available space proves insufficient. Every bank imposes a limit that describes the total number of object frames that can be allocated via a given bank. The applicable limit value is therefore the most constraining of the limits of all of the parent banks up to the prime bank.