|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.glassfish.grizzly.memory.AbstractMemoryManager<ByteBufferWrapper>
org.glassfish.grizzly.memory.ByteBufferManager
public class ByteBufferManager
The simple Buffer manager implementation, which works as wrapper above
ByteBuffer
s. It's possible to work either with direct or heap
ByteBuffer
s.
MemoryManager
,
ByteBuffer
Nested Class Summary | |
---|---|
protected class |
ByteBufferManager.SmallByteBufferWrapper
ByteBufferWrapper implementation, which supports trimming. |
Nested classes/interfaces inherited from class org.glassfish.grizzly.memory.AbstractMemoryManager |
---|
AbstractMemoryManager.TrimAware |
Field Summary | |
---|---|
static int |
DEFAULT_SMALL_BUFFER_SIZE
TODO: Document |
protected boolean |
isDirect
Is direct ByteBuffer should be used? |
protected int |
maxSmallBufferSize
|
Fields inherited from class org.glassfish.grizzly.memory.AbstractMemoryManager |
---|
DEFAULT_MAX_BUFFER_SIZE, maxBufferSize, monitoringConfig |
Fields inherited from interface org.glassfish.grizzly.memory.MemoryManager |
---|
DEFAULT_MEMORY_MANAGER |
Constructor Summary | |
---|---|
ByteBufferManager()
|
|
ByteBufferManager(boolean isDirect,
int maxBufferSize,
int maxSmallBufferSize)
|
Method Summary | |
---|---|
ByteBufferWrapper |
allocate(int size)
Allocated Buffer of the required size. |
ByteBufferWrapper |
allocateAtLeast(int size)
Allocated Buffer at least of the provided size. |
ByteBuffer |
allocateByteBuffer(int size)
Allocates ByteBuffer of required size. |
protected ByteBuffer |
allocateByteBuffer0(int size)
|
ByteBuffer |
allocateByteBufferAtLeast(int size)
Allocates ByteBuffer of required size. |
protected JmxObject |
createJmxManagementObject()
Create the Memory Manager JMX management object. |
protected ByteBufferManager.SmallByteBufferWrapper |
createSmallBuffer()
|
ThreadLocalPool |
createThreadLocalPool()
|
int |
getMaxSmallBufferSize()
|
JmxMonitoringConfig<MemoryProbe> |
getMonitoringConfig()
Return the object associated JmxMonitoringConfig . |
boolean |
isDirect()
Returns true, if ByteBufferManager works with direct ByteBuffer s, or false otherwise. |
ByteBufferWrapper |
reallocate(ByteBufferWrapper oldBuffer,
int newSize)
Reallocate Buffer to a required size. |
ByteBuffer |
reallocateByteBuffer(ByteBuffer oldByteBuffer,
int newSize)
|
void |
release(ByteBufferWrapper buffer)
Lets JVM Garbage collector to release buffer. |
void |
releaseByteBuffer(ByteBuffer byteBuffer)
|
void |
setDirect(boolean isDirect)
Set true, if ByteBufferManager works with direct ByteBuffer s, or false otherwise. |
boolean |
willAllocateDirect(int size)
Return true if next MemoryManager.allocate(int) or MemoryManager.allocateAtLeast(int) call,
made in the current thread for the given memory size, going to return a Buffer based
on direct ByteBuffer , or false otherwise. |
ByteBufferWrapper |
wrap(byte[] data)
Returns Buffer , which wraps the byte array. |
ByteBufferWrapper |
wrap(byte[] data,
int offset,
int length)
Returns Buffer , which wraps the part of byte array with
specific offset and length. |
ByteBufferWrapper |
wrap(ByteBuffer byteBuffer)
Returns Buffer , which wraps the ByteBuffer . |
ByteBufferWrapper |
wrap(String s)
Returns Buffer , which wraps the String . |
ByteBufferWrapper |
wrap(String s,
Charset charset)
Returns Buffer , which wraps the String with the specific
Charset . |
Methods inherited from class org.glassfish.grizzly.memory.AbstractMemoryManager |
---|
allocateFromPool, getMaxBufferSize, getReadyThreadBufferSize, getThreadLocalPool |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DEFAULT_SMALL_BUFFER_SIZE
protected boolean isDirect
protected final int maxSmallBufferSize
Constructor Detail |
---|
public ByteBufferManager()
public ByteBufferManager(boolean isDirect, int maxBufferSize, int maxSmallBufferSize)
Method Detail |
---|
public int getMaxSmallBufferSize()
public ByteBufferWrapper allocate(int size)
Buffer
of the required size.
allocate
in interface MemoryManager<ByteBufferWrapper>
size
- Buffer
size to be allocated.
Buffer
.public ByteBufferWrapper allocateAtLeast(int size)
Buffer
at least of the provided size.
This could be useful for usecases like Socket.read(...), where
we're not sure how many bytes are available, but want to read as
much as possible.
allocateAtLeast
in interface MemoryManager<ByteBufferWrapper>
size
- the min Buffer
size to be allocated.
Buffer
.public ByteBufferWrapper reallocate(ByteBufferWrapper oldBuffer, int newSize)
Buffer
to a required size.
Implementation may choose the way, how reallocation could be done, either
by allocating new Buffer
of required size and copying old
Buffer
content there, or perform more complex logic related to
memory pooling etc.
reallocate
in interface MemoryManager<ByteBufferWrapper>
oldBuffer
- old Buffer
to be reallocated.newSize
- new Buffer
required size.
Buffer
.public void release(ByteBufferWrapper buffer)
release
in interface MemoryManager<ByteBufferWrapper>
buffer
- Buffer
to be released.public boolean isDirect()
ByteBuffer
s, or false otherwise.
ByteBuffer
s, or false otherwise.public void setDirect(boolean isDirect)
ByteBuffer
s, or false otherwise.
isDirect
- true, if ByteBufferManager works with
direct ByteBuffer
s, or false otherwise.public boolean willAllocateDirect(int size)
MemoryManager.allocate(int)
or MemoryManager.allocateAtLeast(int)
call,
made in the current thread for the given memory size, going to return a Buffer
based
on direct ByteBuffer
, or false otherwise.
willAllocateDirect
in interface MemoryManager<ByteBufferWrapper>
public ByteBufferWrapper wrap(byte[] data)
Buffer
, which wraps the byte array.
wrap
in interface WrapperAware
data
- byte array to wrap
Buffer
wrapper on top of passed byte array.public ByteBufferWrapper wrap(byte[] data, int offset, int length)
Buffer
, which wraps the part of byte array with
specific offset and length.
wrap
in interface WrapperAware
data
- byte array to wrapoffset
- byte buffer offsetlength
- byte buffer length
Buffer
wrapper on top of passed byte array.public ByteBufferWrapper wrap(String s)
Buffer
, which wraps the String
.
wrap
in interface WrapperAware
s
- String
Buffer
wrapper on top of passed String
.public ByteBufferWrapper wrap(String s, Charset charset)
Buffer
, which wraps the String
with the specific
Charset
.
wrap
in interface WrapperAware
s
- String
charset
- Charset
, which will be used, when converting
String
to byte array.
Buffer
wrapper on top of passed String
.public ThreadLocalPool createThreadLocalPool()
createThreadLocalPool
in interface ThreadLocalPoolProvider
ThreadLocalPool
implementation. This method
must return a new ThreadLocalPool
instance per invocation.public ByteBufferWrapper wrap(ByteBuffer byteBuffer)
Buffer
, which wraps the ByteBuffer
.
wrap
in interface WrapperAware
byteBuffer
- ByteBuffer
to wrap
Buffer
wrapper on top of passed ByteBuffer
.public ByteBuffer allocateByteBuffer(int size)
ByteBuffer
of required size.
allocateByteBuffer
in interface ByteBufferAware
size
- ByteBuffer
size.
ByteBuffer
.public ByteBuffer allocateByteBufferAtLeast(int size)
ByteBuffer
of required size.
allocateByteBufferAtLeast
in interface ByteBufferAware
size
- ByteBuffer
size.
ByteBuffer
.public ByteBuffer reallocateByteBuffer(ByteBuffer oldByteBuffer, int newSize)
reallocateByteBuffer
in interface ByteBufferAware
public void releaseByteBuffer(ByteBuffer byteBuffer)
releaseByteBuffer
in interface ByteBufferAware
protected ByteBufferManager.SmallByteBufferWrapper createSmallBuffer()
public JmxMonitoringConfig<MemoryProbe> getMonitoringConfig()
JmxMonitoringAware
JmxMonitoringConfig
.
getMonitoringConfig
in interface JmxMonitoringAware<MemoryProbe>
getMonitoringConfig
in interface MonitoringAware<MemoryProbe>
JmxMonitoringConfig
.protected JmxObject createJmxManagementObject()
createJmxManagementObject
in class AbstractMemoryManager<ByteBufferWrapper>
protected final ByteBuffer allocateByteBuffer0(int size)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |