Class NativeMemoryConfig

java.lang.Object
com.hazelcast.config.NativeMemoryConfig

public class NativeMemoryConfig
extends Object
Configures native memory region.

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.

  • Field Details

    • DEFAULT_MIN_BLOCK_SIZE

      public static final int DEFAULT_MIN_BLOCK_SIZE
      Default minimum block size in bytes
      See Also:
      Constant Field Values
    • DEFAULT_PAGE_SIZE

      public static final int DEFAULT_PAGE_SIZE
      Default page size in bytes
      See Also:
      Constant Field Values
    • DEFAULT_METADATA_SPACE_PERCENTAGE

      public static final float DEFAULT_METADATA_SPACE_PERCENTAGE
      Default metadata space percentage
      See Also:
      Constant Field Values
    • MIN_INITIAL_MEMORY_SIZE

      public static final int MIN_INITIAL_MEMORY_SIZE
      Minimum initial memory size in megabytes
      See Also:
      Constant Field Values
    • INITIAL_MEMORY_SIZE

      public static final int INITIAL_MEMORY_SIZE
      Initial memory size in megabytes
      See Also:
      Constant Field Values
  • Constructor Details

    • NativeMemoryConfig

      public NativeMemoryConfig()
    • NativeMemoryConfig

      public NativeMemoryConfig​(NativeMemoryConfig nativeMemoryConfig)
  • Method Details

    • getSize

      public MemorySize getSize()
      Returns size of the native memory region.
    • setSize

      public NativeMemoryConfig setSize​(MemorySize size)
      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()
      Returns true if native memory allocation is enabled, false otherwise.
    • setEnabled

      public NativeMemoryConfig setEnabled​(boolean enabled)
      Enables or disables native memory allocation.
      Returns:
      this NativeMemoryConfig instance
    • getAllocatorType

      public NativeMemoryConfig.MemoryAllocatorType getAllocatorType()
      Returns the NativeMemoryConfig.MemoryAllocatorType to be used while allocating native memory.
    • setAllocatorType

      public NativeMemoryConfig setAllocatorType​(NativeMemoryConfig.MemoryAllocatorType allocatorType)
      Sets the NativeMemoryConfig.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 is DEFAULT_MIN_BLOCK_SIZE bytes.

      This configuration is used only by NativeMemoryConfig.MemoryAllocatorType.POOLED, otherwise ignored.

    • setMinBlockSize

      public NativeMemoryConfig setMinBlockSize​(int minBlockSize)
      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 is DEFAULT_PAGE_SIZE bytes.

      This configuration is used only by NativeMemoryConfig.MemoryAllocatorType.POOLED, otherwise ignored.

    • setPageSize

      public NativeMemoryConfig setPageSize​(int pageSize)
      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 is DEFAULT_METADATA_SPACE_PERCENTAGE.

      This configuration is used only by NativeMemoryConfig.MemoryAllocatorType.POOLED, otherwise ignored.

    • setMetadataSpacePercentage

      public 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.

      This configuration is used only by NativeMemoryConfig.MemoryAllocatorType.POOLED, otherwise ignored.

      Parameters:
      metadataSpacePercentage - percentage of metadata space
      Returns:
      this NativeMemoryConfig instance
    • getPersistentMemoryDirectory

      public String 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

      public NativeMemoryConfig setPersistentMemoryDirectory​(String directory)
      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

      public final boolean equals​(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object