public class SslBufferPool
extends java.lang.Object
ByteBuffer
pool dedicated for SslHandler
performance improvement.
In most cases, you won't need to create a new pool instance because SslHandler
has a default pool
instance internally.
The reason why SslHandler
requires a buffer pool is because the current SSLEngine
implementation
always requires a 17KiB buffer for every 'wrap' and 'unwrap' operation. In most cases, the actual size of the
required buffer is much smaller than that, and therefore allocating a 17KiB buffer for every 'wrap' and 'unwrap'
operation wastes a lot of memory bandwidth, resulting in the application performance degradation.
构造器和说明 |
---|
SslBufferPool()
Creates a new buffer pool whose size is
19267584 , which can hold 1024 buffers. |
SslBufferPool(boolean preallocate,
boolean allocateDirect)
Creates a new buffer pool whose size is
19267584 , which can hold 1024 buffers. |
SslBufferPool(int maxPoolSize)
Creates a new buffer pool.
|
SslBufferPool(int maxPoolSize,
boolean preallocate,
boolean allocateDirect)
Creates a new buffer pool.
|
限定符和类型 | 方法和说明 |
---|---|
java.nio.ByteBuffer |
acquireBuffer()
Acquire a new
ByteBuffer out of the SslBufferPool |
int |
getMaxPoolSize()
Returns the maximum size of this pool in byte unit.
|
int |
getUnacquiredPoolSize()
Returns the number of bytes which were allocated but have not been
acquired yet.
|
void |
releaseBuffer(java.nio.ByteBuffer buffer)
Release a previous acquired
ByteBuffer |
public SslBufferPool()
19267584
, which can hold 1024
buffers.public SslBufferPool(boolean preallocate, boolean allocateDirect)
19267584
, which can hold 1024
buffers.preallocate
- true
if and only if the buffers in this pool has to be pre-allocated
at construction timeallocateDirect
- true
if and only if this pool has to allocate direct buffers.public SslBufferPool(int maxPoolSize)
maxPoolSize
- the maximum number of bytes that this pool can holdpublic SslBufferPool(int maxPoolSize, boolean preallocate, boolean allocateDirect)
maxPoolSize
- the maximum number of bytes that this pool can holdpreallocate
- true
if and only if the buffers in this pool has to be pre-allocated
at construction timeallocateDirect
- true
if and only if this pool has to allocate direct buffers.public int getMaxPoolSize()
public int getUnacquiredPoolSize()
0
, it means the
pool is getting exhausted. If it keeps returns a unnecessarily big
value, it means the pool is wasting the heap space.public java.nio.ByteBuffer acquireBuffer()
ByteBuffer
out of the SslBufferPool
public void releaseBuffer(java.nio.ByteBuffer buffer)
ByteBuffer