Package org.glassfish.grizzly.memory
Interface MemoryManager<E extends Buffer>
-
- All Superinterfaces:
MonitoringAware<MemoryProbe>
- All Known Implementing Classes:
AbstractMemoryManager
,ByteBufferManager
,HeapMemoryManager
,PooledMemoryManager
public interface MemoryManager<E extends Buffer> extends MonitoringAware<MemoryProbe>
MemoryManager, responsible for allocating and releasing memory, required during application runtime. MemoryManager implementations work with GrizzlyBuffer
s.- Author:
- Alexey Stashok
- See Also:
Buffer
-
-
Field Summary
Fields Modifier and Type Field Description static MemoryManager
DEFAULT_MEMORY_MANAGER
The defaultMemoryManager
implementation used by all created builder instances.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description E
allocate(int size)
AllocatedBuffer
of the required size.E
allocateAtLeast(int size)
AllocatedBuffer
at least of the provided size.E
reallocate(E oldBuffer, int newSize)
ReallocateBuffer
to a required size.void
release(E buffer)
ReleaseBuffer
.boolean
willAllocateDirect(int size)
Return true if nextallocate(int)
orallocateAtLeast(int)
call, made in the current thread for the given memory size, going to return aBuffer
based on directByteBuffer
, or false otherwise.-
Methods inherited from interface org.glassfish.grizzly.monitoring.MonitoringAware
getMonitoringConfig
-
-
-
-
Field Detail
-
DEFAULT_MEMORY_MANAGER
static final MemoryManager DEFAULT_MEMORY_MANAGER
The default
MemoryManager
implementation used by all created builder instances.The default may be changed by one of two methods:
- Setting the system property "org.glassfish.grizzly.DEFAULT_MEMORY_MANAGER" with the fully qualified name of the class that implements the MemoryManager interface. Note that this class must be public and have a public no-arg constructor.
- Setting the system property "org.glassfish.grizzly.MEMORY_MANAGER_FACTORY" with the fully qualified name of
the class that implements the
DefaultMemoryManagerFactory
interface. Note that this class must be public and have a public no-arg constructor.
-
-
Method Detail
-
allocateAtLeast
E allocateAtLeast(int size)
AllocatedBuffer
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.
-
release
void release(E buffer)
ReleaseBuffer
. Implementation may ignore releasing and let JVM Garbage collector to take care about theBuffer
, or returnBuffer
to pool, in case of more complex MemoryManager implementation.- Parameters:
buffer
-Buffer
to be released.
-
willAllocateDirect
boolean willAllocateDirect(int size)
Return true if nextallocate(int)
orallocateAtLeast(int)
call, made in the current thread for the given memory size, going to return aBuffer
based on directByteBuffer
, or false otherwise.- Parameters:
size
-- Returns:
-
-