Class UnpooledOffHeapMemoryAllocator

    • Constructor Detail

      • UnpooledOffHeapMemoryAllocator

        public UnpooledOffHeapMemoryAllocator()
    • Method Detail

      • 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
      • 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,
                                            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!