Class LogarithmicArrayByteBufferPool

java.lang.Object
org.eclipse.jetty.io.ArrayByteBufferPool
org.eclipse.jetty.io.LogarithmicArrayByteBufferPool
All Implemented Interfaces:
ByteBufferPool, org.eclipse.jetty.util.component.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 Details

    • 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 Details

    • bucketFor

      protected int bucketFor(int capacity)
      Overrides:
      bucketFor in class ArrayByteBufferPool
    • capacityFor

      protected int capacityFor(int bucket)
      Overrides:
      capacityFor in class ArrayByteBufferPool
    • releaseMemory

      protected void releaseMemory(boolean direct)
      Overrides:
      releaseMemory in class ArrayByteBufferPool
    • getCapacityFactor

      protected int getCapacityFactor()
    • getMaxQueueLength

      protected int getMaxQueueLength()
    • decrementMemory

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

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

      protected void releaseExcessMemory(boolean direct, Consumer<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)