Implementations of BufferAllocator.buffer(...) are expected to throw an OutOfMemoryException if the buffer cannot be allocated. There are multiple reasons for that:
- allocator exceeded it's memory limit
- Netty exceeded it's direct memory limit
- the System is unable to fulfill Netty's request for more direct memory
For now only the first case throws an OutOfMemoryException. The second throws an OutOfDirectMemoryError, and the third an OutOfMemoryError with the "Direct buffer memory" error message.