Module org.glassfish.grizzly
Package org.glassfish.grizzly.memory
Interface MemoryManager<E extends Buffer>
- All Superinterfaces:
MonitoringAware<MemoryProbe>
- All Known Implementing Classes:
AbstractMemoryManager,ByteBufferManager,HeapMemoryManager,PooledMemoryManager
MemoryManager, responsible for allocating and releasing memory, required during application runtime.
MemoryManager implementations work with Grizzly
Buffers.- Author:
- Alexey Stashok
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final MemoryManagerThe defaultMemoryManagerimplementation used by all created builder instances. -
Method Summary
Modifier and TypeMethodDescriptionallocate(int size) AllocatedBufferof the required size.allocateAtLeast(int size) AllocatedBufferat least of the provided size.reallocate(E oldBuffer, int newSize) ReallocateBufferto a required size.voidReleaseBuffer.booleanwillAllocateDirect(int size) Return true if nextallocate(int)orallocateAtLeast(int)call, made in the current thread for the given memory size, going to return aBufferbased on directByteBuffer, or false otherwise.Methods inherited from interface org.glassfish.grizzly.monitoring.MonitoringAware
getMonitoringConfig
-
Field Details
-
DEFAULT_MEMORY_MANAGER
The default
MemoryManagerimplementation 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
DefaultMemoryManagerFactoryinterface. Note that this class must be public and have a public no-arg constructor.
-
-
Method Details
-
allocate
AllocatedBufferof the required size. -
allocateAtLeast
AllocatedBufferat 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. -
reallocate
-
release
ReleaseBuffer. Implementation may ignore releasing and let JVM Garbage collector to take care about theBuffer, or returnBufferto pool, in case of more complex MemoryManager implementation.- Parameters:
buffer-Bufferto 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 aBufferbased on directByteBuffer, or false otherwise.- Parameters:
size-- Returns:
-