Class UnpooledOffHeapMemoryAllocator

java.lang.Object
org.infinispan.container.offheap.UnpooledOffHeapMemoryAllocator
All Implemented Interfaces:
OffHeapMemoryAllocator

public class UnpooledOffHeapMemoryAllocator extends Object implements OffHeapMemoryAllocator
Memory allocator that just allocates memory directly using Unsafe.
Since:
9.0
Author:
wburns
  • Constructor Details

    • UnpooledOffHeapMemoryAllocator

      public UnpooledOffHeapMemoryAllocator()
  • Method Details

    • allocate

      public long allocate(long memoryLength)
      Description copied from interface: OffHeapMemoryAllocator
      Allocates a new chunk of memory sized to the given length.
      Specified by:
      allocate in interface OffHeapMemoryAllocator
      Parameters:
      memoryLength - the size of memory to allocate
      Returns:
      the memory address where the memory resides
    • deallocate

      public void deallocate(long memoryAddress, long size)
      Description copied from interface: OffHeapMemoryAllocator
      Deallocates the memory at the given address assuming a given size. This size is the size that was provided to allocate.
      Specified by:
      deallocate in interface OffHeapMemoryAllocator
      Parameters:
      memoryAddress - the address to deallocate from
      size - the total size
    • getAllocatedAmount

      public long getAllocatedAmount()
      Specified by:
      getAllocatedAmount in interface OffHeapMemoryAllocator
    • estimateSizeOverhead

      public static long estimateSizeOverhead(long size)
      Tries to estimate overhead of the allocation by first adding 8 to account for underlying allocator housekeeping and then rounds up to nearest power of 16 to account for 16 byte alignment.
      Parameters:
      size - the desired size of the allocation
      Returns:
      the resulting size taking into account various overheads
    • offHeapEntrySize

      public static long offHeapEntrySize(boolean evictionEnabled, boolean writeMetadataSize, int keySize, int valueSize)
    • offHeapEntrySize

      public static long offHeapEntrySize(boolean evictionEnabled, boolean writeMetadataSize, int keySize, int valueSize, int metadataSize, int internalMetadataSize)
      It returns the off-heap size of an entry without alignment.

      If alignment is required, use estimateSizeOverhead(offHeapEntrySize(...)). See estimateSizeOverhead(long),

      Parameters:
      evictionEnabled - Set to true if eviction is enabled.
      writeMetadataSize - Set to true if the Metadata has versioning or it is a custom implementation.
      keySize - The key size.
      valueSize - The value size.
      metadataSize - The Metadata size. If writeMetadataSize is false, this parameter must include the size of mortal/transient entries (2 or 4 longs).
      internalMetadataSize - The PrivateMetadata size.
      Returns:
      The off-heap entry size without alignment!