|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.mina.core.buffer.CachedBufferAllocator
public class CachedBufferAllocator
An IoBufferAllocator that caches the buffers which are likely to
be reused during auto-expansion of the buffers.
In SimpleBufferAllocator, the underlying ByteBuffer of
the IoBuffer is reallocated on its capacity change, which means
the newly allocated bigger ByteBuffer replaces the old small
ByteBuffer. Consequently, the old ByteBuffer is marked
for garbage collection.
It's not a problem in most cases as long as the capacity change doesn't
happen frequently. However, once it happens too often, it burdens the
VM and the cost of filling the newly allocated ByteBuffer with
NUL surpass the cost of accessing the cache. In 2 dual-core
Opteron Italy 270 processors, CachedBufferAllocator outperformed
SimpleBufferAllocator in the following situation:
CachedBufferAllocator uses ThreadLocal to store the cached
buffer, allocates buffers whose capacity is power of 2 only and provides
performance advantage if IoBuffer.free() is called properly.
| Constructor Summary | |
|---|---|
CachedBufferAllocator()
Creates a new instance with the default parameters (#DEFAULT_MAX_POOL_SIZE and #DEFAULT_MAX_CACHED_BUFFER_SIZE). |
|
CachedBufferAllocator(int maxPoolSize,
int maxCachedBufferSize)
Creates a new instance. |
|
| Method Summary | |
|---|---|
IoBuffer |
allocate(int requestedCapacity,
boolean direct)
Returns the buffer which is capable of the specified size. |
ByteBuffer |
allocateNioBuffer(int capacity,
boolean direct)
Returns the NIO buffer which is capable of the specified size. |
void |
dispose()
Dispose of this allocator. |
int |
getMaxCachedBufferSize()
Returns the maximum capacity of a cached buffer. |
int |
getMaxPoolSize()
Returns the maximum number of buffers with the same capacity per thread. |
IoBuffer |
wrap(ByteBuffer nioBuffer)
Wraps the specified NIO ByteBuffer into MINA buffer. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public CachedBufferAllocator()
public CachedBufferAllocator(int maxPoolSize,
int maxCachedBufferSize)
maxPoolSize - the maximum number of buffers with the same capacity per thread.
0 disables this limitation.maxCachedBufferSize - the maximum capacity of a cached buffer.
A buffer whose capacity is bigger than this value is
not pooled. 0 disables this limitation.| Method Detail |
|---|
public int getMaxPoolSize()
public int getMaxCachedBufferSize()
public IoBuffer allocate(int requestedCapacity,
boolean direct)
IoBufferAllocator
allocate in interface IoBufferAllocatorrequestedCapacity - the capacity of the bufferdirect - true to get a direct buffer,
false to get a heap buffer.
public ByteBuffer allocateNioBuffer(int capacity,
boolean direct)
IoBufferAllocator
allocateNioBuffer in interface IoBufferAllocatorcapacity - the capacity of the bufferdirect - true to get a direct buffer,
false to get a heap buffer.public IoBuffer wrap(ByteBuffer nioBuffer)
IoBufferAllocatorByteBuffer into MINA buffer.
wrap in interface IoBufferAllocatorpublic void dispose()
IoBufferAllocator
dispose in interface IoBufferAllocator
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||