Class ArrayByteBufferPool
java.lang.Object
org.eclipse.jetty.io.AbstractByteBufferPool
org.eclipse.jetty.io.ArrayByteBufferPool
- All Implemented Interfaces:
ByteBufferPool
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.
-
Nested Class Summary
Nested classes/interfaces inherited from interface ByteBufferPool
ByteBufferPool.Bucket, ByteBufferPool.Lease -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ByteBufferPool.Bucket[]private final ByteBufferPool.Bucket[]private final intprivate static final Logger -
Constructor Summary
ConstructorsConstructorDescriptionCreates 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
Modifier and TypeMethodDescriptionacquire(int size, boolean direct) Requests aByteBufferof the given size.private intbucketFor(int capacity) private ByteBufferPool.BucketbucketFor(int capacity, boolean direct, IntFunction<ByteBufferPool.Bucket> newBucket) (package private) ByteBufferPool.Bucket[]bucketsFor(boolean direct) voidclear()private voidclearOldestBucket(boolean direct) private longgetByteBufferCount(boolean direct) longlongprivate ByteBufferPool.BucketnewBucket(int key) voidrelease(ByteBuffer buffer) Returns aByteBuffer, usually obtained withByteBufferPool.acquire(int, boolean)(but not necessarily), making it available for recycling and reuse.Methods inherited from class AbstractByteBufferPool
decrementMemory, getCapacityFactor, getDirectMemory, getHeapMemory, getMaxQueueLength, getMemory, incrementMemory, releaseExcessMemoryMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ByteBufferPool
newByteBuffer, remove
-
Field Details
-
LOG
-
_minCapacity
private final int _minCapacity -
_direct
-
_indirect
-
-
Constructor Details
-
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 Details
-
acquire
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:
-
release
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:
-
newBucket
-
clear
public void clear()- Overrides:
clearin classAbstractByteBufferPool
-
clearOldestBucket
private void clearOldestBucket(boolean direct) -
bucketFor
private int bucketFor(int capacity) -
bucketFor
private ByteBufferPool.Bucket bucketFor(int capacity, boolean direct, IntFunction<ByteBufferPool.Bucket> newBucket) -
getDirectByteBufferCount
-
getHeapByteBufferCount
-
getByteBufferCount
private long getByteBufferCount(boolean direct) -
bucketsFor
-