Class NativeMemoryConfig
public class NativeMemoryConfig extends Object
Native memory is allocated outside JVM heap space and is not subject to JVM garbage collection. Therefore, hundreds of gigabytes of native memory can be allocated & used without introducing pressure on GC mechanism.
Data structures, such as IMap
and ICache
,
store their data (entries, indexes etc.) in native memory region when they are configured with
InMemoryFormat.NATIVE
.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
NativeMemoryConfig.MemoryAllocatorType
Type of memory allocator: STANDARD: allocate/free memory using default OS memory manager POOLED: manage memory blocks in pool -
Field Summary
Fields Modifier and Type Field Description static float
DEFAULT_METADATA_SPACE_PERCENTAGE
Default metadata space percentagestatic int
DEFAULT_MIN_BLOCK_SIZE
Default minimum block size in bytesstatic int
DEFAULT_PAGE_SIZE
Default page size in bytesstatic int
INITIAL_MEMORY_SIZE
Initial memory size in megabytesstatic int
MIN_INITIAL_MEMORY_SIZE
Minimum initial memory size in megabytes -
Constructor Summary
Constructors Constructor Description NativeMemoryConfig()
NativeMemoryConfig(NativeMemoryConfig nativeMemoryConfig)
-
Method Summary
Modifier and Type Method Description boolean
equals(Object o)
NativeMemoryConfig.MemoryAllocatorType
getAllocatorType()
Returns theNativeMemoryConfig.MemoryAllocatorType
to be used while allocating native memory.float
getMetadataSpacePercentage()
Returns the percentage of native memory space to be used to store metadata and internal memory structures by the native memory manager.int
getMinBlockSize()
Returns the minimum memory block size, in bytes, to be served by native memory manager.int
getPageSize()
Returns the page size, in bytes, to be allocated by native memory manager as a single block.String
getPersistentMemoryDirectory()
Returns the persistent memory directory (e.g.MemorySize
getSize()
Returns size of the native memory region.int
hashCode()
boolean
isEnabled()
Returnstrue
if native memory allocation is enabled,false
otherwise.NativeMemoryConfig
setAllocatorType(NativeMemoryConfig.MemoryAllocatorType allocatorType)
Sets theNativeMemoryConfig.MemoryAllocatorType
to be used while allocating native memory.NativeMemoryConfig
setEnabled(boolean enabled)
Enables or disables native memory allocation.NativeMemoryConfig
setMetadataSpacePercentage(float metadataSpacePercentage)
Sets the percentage of native memory space to be used to store metadata and internal memory structures by the native memory manager.NativeMemoryConfig
setMinBlockSize(int minBlockSize)
Sets the minimum memory block size, in bytes, to be served by native memory manager.NativeMemoryConfig
setPageSize(int pageSize)
Sets the page size, in bytes, to be allocated by native memory manager as a single block.NativeMemoryConfig
setPersistentMemoryDirectory(String directory)
Sets the persistent memory directory (e.g.NativeMemoryConfig
setSize(MemorySize size)
Sets size of the native memory region.String
toString()
-
Field Details
-
DEFAULT_MIN_BLOCK_SIZE
public static final int DEFAULT_MIN_BLOCK_SIZEDefault minimum block size in bytes- See Also:
- Constant Field Values
-
DEFAULT_PAGE_SIZE
public static final int DEFAULT_PAGE_SIZEDefault page size in bytes- See Also:
- Constant Field Values
-
DEFAULT_METADATA_SPACE_PERCENTAGE
public static final float DEFAULT_METADATA_SPACE_PERCENTAGEDefault metadata space percentage- See Also:
- Constant Field Values
-
MIN_INITIAL_MEMORY_SIZE
public static final int MIN_INITIAL_MEMORY_SIZEMinimum initial memory size in megabytes- See Also:
- Constant Field Values
-
INITIAL_MEMORY_SIZE
public static final int INITIAL_MEMORY_SIZEInitial memory size in megabytes- See Also:
- Constant Field Values
-
-
Constructor Details
-
NativeMemoryConfig
public NativeMemoryConfig() -
NativeMemoryConfig
-
-
Method Details
-
getSize
Returns size of the native memory region. -
setSize
Sets size of the native memory region.Total size of the memory blocks allocated in native memory region cannot exceed this memory size. When native memory region is completely allocated and in-use, further allocation requests will fail with
NativeOutOfMemoryError
.- Parameters:
size
- memory size- Returns:
- this
NativeMemoryConfig
instance
-
isEnabled
public boolean isEnabled()Returnstrue
if native memory allocation is enabled,false
otherwise. -
setEnabled
Enables or disables native memory allocation.- Returns:
- this
NativeMemoryConfig
instance
-
getAllocatorType
Returns theNativeMemoryConfig.MemoryAllocatorType
to be used while allocating native memory. -
setAllocatorType
Sets theNativeMemoryConfig.MemoryAllocatorType
to be used while allocating native memory.- Parameters:
allocatorType
-MemoryAllocatorType
- Returns:
- this
NativeMemoryConfig
instance
-
getMinBlockSize
public int getMinBlockSize()Returns the minimum memory block size, in bytes, to be served by native memory manager. Allocation requests smaller than minimum block size are served with the minimum block size. Default value isDEFAULT_MIN_BLOCK_SIZE
bytes.This configuration is used only by
NativeMemoryConfig.MemoryAllocatorType.POOLED
, otherwise ignored. -
setMinBlockSize
Sets the minimum memory block size, in bytes, to be served by native memory manager. Allocation requests smaller than minimum block size are served with the minimum block size.This configuration is used only by
NativeMemoryConfig.MemoryAllocatorType.POOLED
, otherwise ignored.- Parameters:
minBlockSize
- minimum memory block size- Returns:
- this
NativeMemoryConfig
instance
-
getPageSize
public int getPageSize()Returns the page size, in bytes, to be allocated by native memory manager as a single block. These page blocks are split into smaller blocks to serve allocation requests. Allocation requests greater than the page size are allocated from system directly, instead of managed memory pool. Default value isDEFAULT_PAGE_SIZE
bytes.This configuration is used only by
NativeMemoryConfig.MemoryAllocatorType.POOLED
, otherwise ignored. -
setPageSize
Sets the page size, in bytes, to be allocated by native memory manager as a single block. These page blocks are split into smaller blocks to serve allocation requests. Allocation requests greater than the page size are allocated from system directly, instead of managed memory pool.This configuration is used only by
NativeMemoryConfig.MemoryAllocatorType.POOLED
, otherwise ignored.- Parameters:
pageSize
- size of the page- Returns:
- this
NativeMemoryConfig
instance
-
getMetadataSpacePercentage
public float getMetadataSpacePercentage()Returns the percentage of native memory space to be used to store metadata and internal memory structures by the native memory manager. Default value isDEFAULT_METADATA_SPACE_PERCENTAGE
.This configuration is used only by
NativeMemoryConfig.MemoryAllocatorType.POOLED
, otherwise ignored. -
setMetadataSpacePercentage
Sets the percentage of native memory space to be used to store metadata and internal memory structures by the native memory manager.This configuration is used only by
NativeMemoryConfig.MemoryAllocatorType.POOLED
, otherwise ignored.- Parameters:
metadataSpacePercentage
- percentage of metadata space- Returns:
- this
NativeMemoryConfig
instance
-
getPersistentMemoryDirectory
Returns the persistent memory directory (e.g. Intel Optane) to be used to store memory structures allocated by native memory manager.Default value is
null
. It indicates that volatile RAM is being used.null
-
setPersistentMemoryDirectory
Sets the persistent memory directory (e.g. Intel Optane) to be used to store memory structures allocated by native memory manager.- Parameters:
directory
- the persistent memory directory- Returns:
- this
NativeMemoryConfig
instance
-
equals
-
hashCode
public final int hashCode() -
toString
-