Class LogarithmicArrayByteBufferPool

  • All Implemented Interfaces:
    ByteBufferPool, Dumpable

    public class LogarithmicArrayByteBufferPool
    extends ArrayByteBufferPool
    Extension of the ArrayByteBufferPool whose bucket sizes increase exponentially instead of linearly. Each bucket will be double the size of the previous bucket, this decreases the amounts of buckets required which can lower total memory usage if buffers are often being acquired of different sizes. However as there are fewer buckets this will also increase the contention on each bucket.
    • Constructor Detail

      • LogarithmicArrayByteBufferPool

        public LogarithmicArrayByteBufferPool()
        Creates a new ByteBufferPool with a default configuration.
      • LogarithmicArrayByteBufferPool

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

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

        public LogarithmicArrayByteBufferPool​(int minCapacity,
                                              int maxCapacity,
                                              int maxQueueLength,
                                              long maxHeapMemory,
                                              long maxDirectMemory)
        Creates a new ByteBufferPool with the given configuration.
        Parameters:
        minCapacity - the minimum ByteBuffer capacity
        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

      • getCapacityFactor

        protected int getCapacityFactor()
      • getMaxQueueLength

        protected int getMaxQueueLength()
      • decrementMemory

        @Deprecated
        protected void decrementMemory​(java.nio.ByteBuffer buffer)
        Deprecated.
      • incrementMemory

        @Deprecated
        protected void incrementMemory​(java.nio.ByteBuffer buffer)
        Deprecated.
      • releaseExcessMemory

        protected void releaseExcessMemory​(boolean direct,
                                           java.util.function.Consumer<java.lang.Boolean> clearFn)
      • getDirectMemory

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

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

        @ManagedAttribute("The max num of bytes that can be retained from direct ByteBuffers")
        public long getMaxDirectMemory()
      • getMaxHeapMemory

        @ManagedAttribute("The max num of bytes that can be retained from heap ByteBuffers")
        public long getMaxHeapMemory()
      • getMemory

        public long getMemory​(boolean direct)