If an allocation fails, there might be an action taken by user code that will free up some memory before the allocation can be retried again. This action could include flushing some temporary buffers, getting rid of some temporarily cached data, or even spilling state to disk.
Today's code is forced to catch out-of-memory exceptions, and then retry the operation at a high level. A more elegant way to do this is to have a callback whenever allocation failed. The callback would inform the allocator whether or not to retry the allocation.
Since the allocator already has an AllocationListener, it makes sense to enhance the existing listener with a new method.
The proposed signature is:
boolean onAllocationFailed(long allocationSize);