public class HeapMemoryManager extends AbstractMemoryManager<HeapBuffer> implements WrapperAware
AbstractMemoryManager.TrimAware
DEFAULT_MAX_BUFFER_SIZE, maxBufferSize, monitoringConfig
DEFAULT_MEMORY_MANAGER
Constructor and Description |
---|
HeapMemoryManager() |
HeapMemoryManager(int maxBufferSize) |
Modifier and Type | Method and Description |
---|---|
HeapBuffer |
allocate(int size)
Allocated
Buffer of the required size. |
HeapBuffer |
allocateAtLeast(int size)
Allocated
Buffer at least of the provided size. |
protected HeapBuffer |
allocateHeapBuffer(int size) |
protected HeapBuffer |
allocateHeapBufferAtLeast(int size) |
protected Object |
createJmxManagementObject() |
ThreadLocalPool |
createThreadLocalPool() |
MonitoringConfig<MemoryProbe> |
getMonitoringConfig()
Return the object associated
MonitoringConfig . |
HeapBuffer |
reallocate(HeapBuffer oldBuffer,
int newSize)
Reallocate
Buffer to a required size. |
protected HeapBuffer |
reallocateHeapBuffer(HeapBuffer oldHeapBuffer,
int newSize) |
void |
release(HeapBuffer buffer)
Release
Buffer . |
protected void |
releaseHeapBuffer(HeapBuffer heapBuffer) |
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. |
HeapBuffer |
wrap(byte[] data)
Returns
Buffer , which wraps the byte array. |
HeapBuffer |
wrap(byte[] data,
int offset,
int length)
Returns
Buffer , which wraps the part of byte array with
specific offset and length. |
Buffer |
wrap(ByteBuffer byteBuffer)
Returns
Buffer , which wraps the ByteBuffer . |
HeapBuffer |
wrap(String s)
|
HeapBuffer |
wrap(String s,
Charset charset)
|
allocateFromPool, getMaxBufferSize, getReadyThreadBufferSize, getThreadLocalPool
public HeapMemoryManager()
public HeapMemoryManager(int maxBufferSize)
public HeapBuffer allocate(int size)
Buffer
of the required size.allocate
in interface MemoryManager<HeapBuffer>
size
- Buffer
size to be allocated.Buffer
.public HeapBuffer 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<HeapBuffer>
size
- the min Buffer
size to be allocated.Buffer
.public HeapBuffer reallocate(HeapBuffer 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<HeapBuffer>
oldBuffer
- old Buffer
to be reallocated.newSize
- new Buffer
required size.Buffer
.public void release(HeapBuffer buffer)
Buffer
.
Implementation may ignore releasing and let JVM Garbage collector to take
care about the Buffer
, or return Buffer
to pool, in case
of more complex MemoryManager implementation.release
in interface MemoryManager<HeapBuffer>
buffer
- Buffer
to be released.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<HeapBuffer>
public MonitoringConfig<MemoryProbe> getMonitoringConfig()
MonitoringConfig
.getMonitoringConfig
in interface MonitoringAware<MemoryProbe>
MonitoringConfig
.public ThreadLocalPool createThreadLocalPool()
createThreadLocalPool
in interface ThreadLocalPoolProvider
ThreadLocalPool
implementation. This method
must return a new ThreadLocalPool
instance per invocation.protected Object createJmxManagementObject()
createJmxManagementObject
in class AbstractMemoryManager<HeapBuffer>
Object
used to register/deregister with the
JMX runtime.public HeapBuffer wrap(byte[] data)
Buffer
, which wraps the byte array.wrap
in interface WrapperAware
data
- byte array to wrapBuffer
wrapper on top of passed byte array.public HeapBuffer 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 lengthBuffer
wrapper on top of passed byte array.public HeapBuffer wrap(String s)
wrap
in interface WrapperAware
s
- String
Buffer
wrapper on top of passed String
.public HeapBuffer wrap(String s, Charset charset)
public Buffer wrap(ByteBuffer byteBuffer)
Buffer
, which wraps the ByteBuffer
.wrap
in interface WrapperAware
byteBuffer
- ByteBuffer
to wrapBuffer
wrapper on top of passed ByteBuffer
.protected HeapBuffer allocateHeapBuffer(int size)
protected HeapBuffer allocateHeapBufferAtLeast(int size)
protected HeapBuffer reallocateHeapBuffer(HeapBuffer oldHeapBuffer, int newSize)
protected final void releaseHeapBuffer(HeapBuffer heapBuffer)
Copyright © 2015 Oracle Corporation. All rights reserved.