Class ArrayByteBufferPool

  • All Implemented Interfaces:
    ByteBufferPool

    @ManagedObject
    public class ArrayByteBufferPool
    extends java.lang.Object

    A ByteBuffer pool where ByteBuffers are held in queues that are held in array elements.

    Given a capacity factor of 1024, the first array element holds a queue of ByteBuffers each of capacity 1024, the second array element holds a queue of ByteBuffers each of capacity 2048, and so on.

    • Constructor Detail

      • ArrayByteBufferPool

        public ArrayByteBufferPool()
        Creates a new ArrayByteBufferPool with a default configuration.
      • ArrayByteBufferPool

        public ArrayByteBufferPool​(int minCapacity,
                                   int factor,
                                   int maxCapacity)
        Creates a new ArrayByteBufferPool with the given configuration.
        Parameters:
        minCapacity - the minimum ByteBuffer capacity
        factor - the capacity factor
        maxCapacity - the maximum ByteBuffer capacity
      • ArrayByteBufferPool

        public ArrayByteBufferPool​(int minCapacity,
                                   int factor,
                                   int maxCapacity,
                                   int maxQueueLength)
        Creates a new ArrayByteBufferPool with the given configuration.
        Parameters:
        minCapacity - the minimum ByteBuffer capacity
        factor - the capacity factor
        maxCapacity - the maximum ByteBuffer capacity
        maxQueueLength - the maximum ByteBuffer queue length
      • ArrayByteBufferPool

        public ArrayByteBufferPool​(int minCapacity,
                                   int factor,
                                   int maxCapacity,
                                   int maxQueueLength,
                                   long maxHeapMemory,
                                   long maxDirectMemory)
        Creates a new ArrayByteBufferPool with the given configuration.
        Parameters:
        minCapacity - the minimum ByteBuffer capacity
        factor - the capacity factor
        maxCapacity - the maximum ByteBuffer capacity
        maxQueueLength - the maximum ByteBuffer queue length
        maxHeapMemory - the max heap memory in bytes
        maxDirectMemory - the max direct memory in bytes
    • Method Detail

      • acquire

        public java.nio.ByteBuffer acquire​(int size,
                                           boolean direct)
        Description copied from interface: ByteBufferPool

        Requests a ByteBuffer of the given size.

        The returned buffer may have a bigger capacity than the size being requested but it will have the limit set to the given size.

        Parameters:
        size - the size of the buffer
        direct - whether the buffer must be direct or not
        Returns:
        the requested buffer
        See Also:
        ByteBufferPool.release(ByteBuffer)
      • clear

        public void clear()
      • getDirectByteBufferCount

        @ManagedAttribute("The number of pooled direct ByteBuffers")
        public long getDirectByteBufferCount()
      • getHeapByteBufferCount

        @ManagedAttribute("The number of pooled heap ByteBuffers")
        public long getHeapByteBufferCount()
      • getDirectMemory

        @ManagedAttribute("The bytes retained by direct ByteBuffers")
        public long getDirectMemory()
      • getHeapMemory

        @ManagedAttribute("The bytes retained by heap ByteBuffers")
        public long getHeapMemory()
      • getMemory

        public long getMemory​(boolean direct)