Class MappedByteBufferPool

java.lang.Object
org.eclipse.jetty.io.MappedByteBufferPool
All Implemented Interfaces:
ByteBufferPool
Direct Known Subclasses:
MappedByteBufferPool.Tagged

@ManagedObject public class MappedByteBufferPool extends Object

A ByteBuffer pool where ByteBuffers are held in queues that are held in a Map.

Given a capacity factor of 1024, the Map entry with key 1 holds a queue of ByteBuffers each of capacity 1024, the Map entry with key 2 holds a queue of ByteBuffers each of capacity 2048, and so on.

  • Constructor Details

    • MappedByteBufferPool

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

      public MappedByteBufferPool(int factor)
      Creates a new MappedByteBufferPool with the given capacity factor.
      Parameters:
      factor - the capacity factor
    • MappedByteBufferPool

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

      public MappedByteBufferPool(int factor, int maxQueueLength, Function<Integer,ByteBufferPool.Bucket> newBucket)
      Creates a new MappedByteBufferPool with the given configuration.
      Parameters:
      factor - the capacity factor
      maxQueueLength - the maximum ByteBuffer queue length
      newBucket - the function that creates a Bucket
    • MappedByteBufferPool

      public MappedByteBufferPool(int factor, int maxQueueLength, Function<Integer,ByteBufferPool.Bucket> newBucket, long maxHeapMemory, long maxDirectMemory)
      Creates a new MappedByteBufferPool with the given configuration.
      Parameters:
      factor - the capacity factor
      maxQueueLength - the maximum ByteBuffer queue length
      newBucket - the function that creates a Bucket
      maxHeapMemory - the max heap memory in bytes
      maxDirectMemory - the max direct memory in bytes
  • Method Details

    • acquire

      public 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:
    • release

      public void release(ByteBuffer buffer)
      Description copied from interface: ByteBufferPool

      Returns a ByteBuffer, usually obtained with ByteBufferPool.acquire(int, boolean) (but not necessarily), making it available for recycling and reuse.

      Parameters:
      buffer - the buffer to return
      See Also:
    • 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()
    • getCapacityFactor

      protected int getCapacityFactor()
    • getMaxQueueLength

      protected int getMaxQueueLength()
    • decrementMemory

      protected void decrementMemory(ByteBuffer buffer)
    • incrementMemory

      protected void incrementMemory(ByteBuffer buffer)
    • 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()
    • getMemory

      public long getMemory(boolean direct)