Package org.eclipse.jetty.io
Class ArrayRetainableByteBufferPool
java.lang.Object
org.eclipse.jetty.io.ArrayRetainableByteBufferPool
- All Implemented Interfaces:
RetainableByteBufferPool
,Dumpable
- Direct Known Subclasses:
ArrayByteBufferPool.Retained
,LogarithmicArrayByteBufferPool.LogarithmicRetainablePool
,MappedByteBufferPool.Retained
@ManagedObject
public class ArrayRetainableByteBufferPool
extends Object
implements RetainableByteBufferPool, Dumpable
A RetainableByteBuffer
pool where RetainableByteBuffers are held in Pool
s that are
held in array elements.
Given a capacity factor
of 1024, the first array element holds a Pool of RetainableByteBuffers
each of capacity 1024, the second array element holds a Pool of RetainableByteBuffers each of capacity
2048, and so on.
The maxHeapMemory
and maxDirectMemory
default heuristic is to use Runtime.maxMemory()
divided by 4.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
Nested classes/interfaces inherited from interface org.eclipse.jetty.io.RetainableByteBufferPool
RetainableByteBufferPool.NotRetainedByteBufferPool
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionCreates a new ArrayRetainableByteBufferPool with a default configuration.ArrayRetainableByteBufferPool
(int minCapacity, int factor, int maxCapacity, int maxBucketSize) Creates a new ArrayRetainableByteBufferPool with the given configuration.ArrayRetainableByteBufferPool
(int minCapacity, int factor, int maxCapacity, int maxBucketSize, long maxHeapMemory, long maxDirectMemory) Creates a new ArrayRetainableByteBufferPool with the given configuration.protected
ArrayRetainableByteBufferPool
(int minCapacity, int factor, int maxCapacity, int maxBucketSize, long maxHeapMemory, long maxDirectMemory, Function<Integer, Integer> bucketIndexFor, Function<Integer, Integer> bucketCapacity) Deprecated.protected
ArrayRetainableByteBufferPool
(int minCapacity, int factor, int maxCapacity, int maxBucketSize, IntUnaryOperator bucketIndexFor, IntUnaryOperator bucketCapacity, long maxHeapMemory, long maxDirectMemory) Creates a new ArrayRetainableByteBufferPool with the given configuration. -
Method Summary
Modifier and TypeMethodDescriptionacquire
(int size, boolean direct) Acquires a memory buffer from the pool.protected ByteBuffer
allocate
(int capacity) protected ByteBuffer
allocateDirect
(int capacity) void
clear()
void
dump
(Appendable out, String indent) Dump this object (and children) into an Appendable using the provided indent after any new lines.long
long
long
long
long
long
long
long
int
int
protected Pool<RetainableByteBuffer>
poolFor
(int capacity, boolean direct) protected void
removed
(RetainableByteBuffer retainedBuffer) toString()
-
Constructor Details
-
ArrayRetainableByteBufferPool
public ArrayRetainableByteBufferPool()Creates a new ArrayRetainableByteBufferPool with a default configuration. BothmaxHeapMemory
andmaxDirectMemory
default to 0 to use default heuristic. -
ArrayRetainableByteBufferPool
public ArrayRetainableByteBufferPool(int minCapacity, int factor, int maxCapacity, int maxBucketSize) Creates a new ArrayRetainableByteBufferPool with the given configuration. BothmaxHeapMemory
andmaxDirectMemory
default to 0 to use default heuristic.- Parameters:
minCapacity
- the minimum ByteBuffer capacityfactor
- the capacity factormaxCapacity
- the maximum ByteBuffer capacitymaxBucketSize
- the maximum number of ByteBuffers for each bucket
-
ArrayRetainableByteBufferPool
public ArrayRetainableByteBufferPool(int minCapacity, int factor, int maxCapacity, int maxBucketSize, long maxHeapMemory, long maxDirectMemory) Creates a new ArrayRetainableByteBufferPool with the given configuration.- Parameters:
minCapacity
- the minimum ByteBuffer capacityfactor
- the capacity factormaxCapacity
- the maximum ByteBuffer capacitymaxBucketSize
- the maximum number of ByteBuffers for each bucketmaxHeapMemory
- the max heap memory in bytes, -1 for unlimited memory or 0 to use default heuristicmaxDirectMemory
- the max direct memory in bytes, -1 for unlimited memory or 0 to use default heuristic
-
ArrayRetainableByteBufferPool
@Deprecated protected ArrayRetainableByteBufferPool(int minCapacity, int factor, int maxCapacity, int maxBucketSize, long maxHeapMemory, long maxDirectMemory, Function<Integer, Integer> bucketIndexFor, Function<Integer, Integer> bucketCapacity) Deprecated.Creates a new ArrayRetainableByteBufferPool with the given configuration.- Parameters:
minCapacity
- the minimum ByteBuffer capacityfactor
- the capacity factormaxCapacity
- the maximum ByteBuffer capacitymaxBucketSize
- the maximum number of ByteBuffers for each bucketmaxHeapMemory
- the max heap memory in bytes, -1 for unlimited memory or 0 to use default heuristicmaxDirectMemory
- the max direct memory in bytes, -1 for unlimited memory or 0 to use default heuristicbucketIndexFor
- aFunction
that takes a capacity and returns a bucket indexbucketCapacity
- aFunction
that takes a bucket index and returns a capacity
-
ArrayRetainableByteBufferPool
protected ArrayRetainableByteBufferPool(int minCapacity, int factor, int maxCapacity, int maxBucketSize, IntUnaryOperator bucketIndexFor, IntUnaryOperator bucketCapacity, long maxHeapMemory, long maxDirectMemory) Creates a new ArrayRetainableByteBufferPool with the given configuration.- Parameters:
minCapacity
- the minimum ByteBuffer capacityfactor
- the capacity factormaxCapacity
- the maximum ByteBuffer capacitymaxBucketSize
- the maximum number of ByteBuffers for each bucketbucketIndexFor
- aIntUnaryOperator
that takes a capacity and returns a bucket indexbucketCapacity
- aIntUnaryOperator
that takes a bucket index and returns a capacitymaxHeapMemory
- the max heap memory in bytes, -1 for unlimited memory or 0 to use default heuristicmaxDirectMemory
- the max direct memory in bytes, -1 for unlimited memory or 0 to use default heuristic
-
-
Method Details
-
getMinCapacity
-
getMaxCapacity
-
acquire
Description copied from interface:RetainableByteBufferPool
Acquires a memory buffer from the pool.- Specified by:
acquire
in interfaceRetainableByteBufferPool
- Parameters:
size
- The size of the buffer. The returned buffer will have at least this capacity.direct
- true if a direct memory buffer is needed, false otherwise.- Returns:
- a memory buffer with position and size set to 0.
-
allocate
-
allocateDirect
-
removed
-
poolFor
-
getDirectByteBufferCount
-
getHeapByteBufferCount
-
getAvailableDirectByteBufferCount
@ManagedAttribute("The number of pooled direct ByteBuffers that are available") public long getAvailableDirectByteBufferCount() -
getAvailableHeapByteBufferCount
@ManagedAttribute("The number of pooled heap ByteBuffers that are available") public long getAvailableHeapByteBufferCount() -
getDirectMemory
-
getHeapMemory
-
getAvailableDirectMemory
@ManagedAttribute("The available bytes retained by direct ByteBuffers") public long getAvailableDirectMemory() -
getAvailableHeapMemory
@ManagedAttribute("The available bytes retained by heap ByteBuffers") public long getAvailableHeapMemory() -
clear
@ManagedOperation(value="Clears this RetainableByteBufferPool", impact="ACTION") public void clear()- Specified by:
clear
in interfaceRetainableByteBufferPool
-
toString
-
dump
Description copied from interface:Dumpable
Dump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.- Specified by:
dump
in interfaceDumpable
- Parameters:
out
- The appendable to dump toindent
- The indent to apply after any new lines.- Throws:
IOException
- if unable to write to Appendable
-
ArrayRetainableByteBufferPool(int, int, int, int, IntUnaryOperator, IntUnaryOperator, long, long)
instead