Class CachingBufferPool
java.lang.Object
org.xerial.snappy.pool.CachingBufferPool
- All Implemented Interfaces:
BufferPool
A
BufferPool implementation which caches values at fixed sizes.
Pooled instances are held as SoftReference to allow GC if necessary.
The current fixed sizes are calculated as follows:
- Values invalid input: '<' 4KB return 4KB
- 4KB - 32KB to 2KB
- 32KB - 512KB to 16KB
- 512KB - 2MB to 128KB
- 2MB - 16MB to 512KB
- 16MB - 128MB to 4MB
- 128MB - 512MB to 16MB
- 512MB - 1.5 GB to 128MB
- Values > 1.5GB return
Integer.MAX_VALUE
- Author:
- Brett Okken
-
Method Summary
Modifier and TypeMethodDescriptionbyte[]allocateArray(int size) Returns abyte[]of size or greater length.allocateDirect(int size) Returns adirect ByteBufferof size or greatercapacity.static BufferPoolReturns instance ofCachingBufferPoolfor using cached buffers.voidreleaseArray(byte[] buffer) Returns instance to pool for potential future reuse.voidreleaseDirect(ByteBuffer buffer) Returns instance to pool for potential future reuse.toString()
-
Method Details
-
getInstance
Returns instance ofCachingBufferPoolfor using cached buffers.- Returns:
- instance of
CachingBufferPoolfor using cached buffers.
-
allocateArray
public byte[] allocateArray(int size) Returns abyte[]of size or greater length.- Specified by:
allocateArrayin interfaceBufferPool- Parameters:
size- The minimum size array required. Must be>= 0.- Returns:
- A
byte[]with length of at least size. - See Also:
-
releaseArray
public void releaseArray(byte[] buffer) Returns instance to pool for potential future reuse.Must not be returned more than 1 time. Must not be used by caller after return.
- Specified by:
releaseArrayin interfaceBufferPool- Parameters:
buffer- Instance to return to pool. Must not benull. Must not be returned more than 1 time. Must not be used by caller after return.
-
allocateDirect
Returns adirect ByteBufferof size or greatercapacity.- Specified by:
allocateDirectin interfaceBufferPool- Parameters:
size- The minimum size buffer required. Must be>= 0.- Returns:
- A
ByteBufferof size or greatercapacity. - See Also:
-
releaseDirect
Returns instance to pool for potential future reuse.Must not be returned more than 1 time. Must not be used by caller after return.
- Specified by:
releaseDirectin interfaceBufferPool- Parameters:
buffer- Instance to return to pool. Must not benull. Must not be returned more than 1 time. Must not be used by caller after return.
-
toString
-