- java.lang.Object
-
- org.eclipse.jetty.io.ArrayByteBufferPool
-
- All Implemented Interfaces:
ByteBufferPool
@ManagedObject public class ArrayByteBufferPool extends java.lang.ObjectA ByteBuffer pool where ByteBuffers are held in queues that are held in array elements.
Given a capacity
factorof 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.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.io.ByteBufferPool
ByteBufferPool.Bucket, ByteBufferPool.Lease
-
-
Constructor Summary
Constructors Constructor Description ArrayByteBufferPool()Creates a new ArrayByteBufferPool with a default configuration.ArrayByteBufferPool(int minCapacity, int factor, int maxCapacity)Creates a new ArrayByteBufferPool with the given configuration.ArrayByteBufferPool(int minCapacity, int factor, int maxCapacity, int maxQueueLength)Creates a new ArrayByteBufferPool with the given configuration.ArrayByteBufferPool(int minCapacity, int factor, int maxCapacity, int maxQueueLength, long maxHeapMemory, long maxDirectMemory)Creates a new ArrayByteBufferPool with the given configuration.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.nio.ByteBufferacquire(int size, boolean direct)Requests aByteBufferof the given size.voidclear()protected voiddecrementMemory(java.nio.ByteBuffer buffer)protected intgetCapacityFactor()longgetDirectByteBufferCount()longgetDirectMemory()longgetHeapByteBufferCount()longgetHeapMemory()protected intgetMaxQueueLength()longgetMemory(boolean direct)protected voidincrementMemory(java.nio.ByteBuffer buffer)voidrelease(java.nio.ByteBuffer buffer)Returns aByteBuffer, usually obtained withByteBufferPool.acquire(int, boolean)(but not necessarily), making it available for recycling and reuse.protected voidreleaseExcessMemory(boolean direct, java.util.function.Consumer<java.lang.Boolean> clearFn)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.io.ByteBufferPool
newByteBuffer, remove
-
-
-
-
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 capacityfactor- the capacity factormaxCapacity- 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 capacityfactor- the capacity factormaxCapacity- the maximum ByteBuffer capacitymaxQueueLength- 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 capacityfactor- the capacity factormaxCapacity- the maximum ByteBuffer capacitymaxQueueLength- the maximum ByteBuffer queue lengthmaxHeapMemory- the max heap memory in bytesmaxDirectMemory- the max direct memory in bytes
-
-
Method Detail
-
acquire
public java.nio.ByteBuffer acquire(int size, boolean direct)Description copied from interface:ByteBufferPoolRequests a
ByteBufferof 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 bufferdirect- whether the buffer must be direct or not- Returns:
- the requested buffer
- See Also:
ByteBufferPool.release(ByteBuffer)
-
release
public void release(java.nio.ByteBuffer buffer)
Description copied from interface:ByteBufferPoolReturns a
ByteBuffer, usually obtained withByteBufferPool.acquire(int, boolean)(but not necessarily), making it available for recycling and reuse.- Parameters:
buffer- the buffer to return- See Also:
ByteBufferPool.acquire(int, boolean)
-
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(java.nio.ByteBuffer buffer)
-
incrementMemory
protected void incrementMemory(java.nio.ByteBuffer buffer)
-
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()
-
getMemory
public long getMemory(boolean direct)
-
-