Package one.microstream.memory
Class XMemory
java.lang.Object
one.microstream.memory.XMemory
public final class XMemory extends Object
Util class for low-level VM memory operations and information that makes the call site independent of
a certain JVM implementation (e.g. java.misc.Unsafe).
-
Method Summary
Modifier and Type Method Description static long
allocate(long bytes)
static ByteBuffer
allocateDirectNative(int capacity)
Alias forByteBuffer.allocateDirect(capacity).order(ByteOrder.nativeOrder())
.static ByteBuffer
allocateDirectNative(long capacity)
static ByteBuffer
allocateDirectNativeDefault()
static byte[]
asByteArray(long value)
static byte[]
asByteArray(long[] longArray)
static int
bitSize_boolean()
static int
bitSize_byte()
static int
bitSize_char()
static int
bitSize_double()
static int
bitSize_float()
static int
bitSize_int()
static int
bitSize_long()
static int
bitSize_short()
static int
byteSize_boolean()
static int
byteSize_byte()
static int
byteSize_char()
static int
byteSize_double()
static int
byteSize_float()
static int
byteSize_int()
static int
byteSize_long()
static int
byteSize_short()
static long
byteSizeArray_boolean(long elementCount)
static long
byteSizeArray_byte(long elementCount)
static long
byteSizeArray_char(long elementCount)
static long
byteSizeArray_double(long elementCount)
static long
byteSizeArray_float(long elementCount)
static long
byteSizeArray_int(long elementCount)
static long
byteSizeArray_long(long elementCount)
static long
byteSizeArray_short(long elementCount)
static long
byteSizeArrayObject(long elementCount)
static int
byteSizeFieldValue(Class<?> type)
static int
byteSizeFieldValue(Field field)
static int
byteSizeInstance(Class<?> c)
static int
byteSizeObjectHeader(Class<?> c)
static int
byteSizePrimitive(Class<?> type)
static int
byteSizeReference()
static ByteBuffer
capLimit(ByteBuffer buffer, long limit)
static ByteBuffer
clearForLimit(ByteBuffer buffer, long limit)
static void
copyArrayToAddress(boolean[] array, long targetAddress)
static void
copyArrayToAddress(byte[] array, long targetAddress)
static void
copyArrayToAddress(char[] array, long targetAddress)
static void
copyArrayToAddress(double[] array, long targetAddress)
static void
copyArrayToAddress(float[] array, long targetAddress)
static void
copyArrayToAddress(int[] array, long targetAddress)
static void
copyArrayToAddress(long[] array, long targetAddress)
static void
copyArrayToAddress(short[] array, long targetAddress)
static void
copyRange(long sourceAddress, long targetAddress, long length)
static void
copyRangeToArray(long sourceAddress, boolean[] target)
static void
copyRangeToArray(long sourceAddress, byte[] target)
static void
copyRangeToArray(long sourceAddress, char[] target)
static void
copyRangeToArray(long sourceAddress, double[] target)
static void
copyRangeToArray(long sourceAddress, float[] target)
static void
copyRangeToArray(long sourceAddress, int[] target)
static void
copyRangeToArray(long sourceAddress, long[] target)
static void
copyRangeToArray(long sourceAddress, short[] target)
static boolean
deallocateDirectByteBuffer(ByteBuffer directBuffer)
static int
defaultBufferSize()
Arbitrary value that coincidentally matches most hardware's standard page sizes without being hard-tied to an actual pageSize system value.static void
ensureClassInitialized(Class<?> c)
static void
ensureClassInitialized(Class<?> c, Iterable<Field> usedFields)
static void
fillMemory(long address, long length, byte value)
static void
free(long address)
static boolean
get_boolean(long address)
static boolean
get_boolean(Object instance, long offset)
static byte
get_byte(long address)
static byte
get_byte(Object instance, long offset)
static char
get_char(long address)
static char
get_char(Object instance, long offset)
static double
get_double(long address)
static double
get_double(Object instance, long offset)
static float
get_float(long address)
static float
get_float(Object instance, long offset)
static int
get_int(long address)
static int
get_int(Object instance, long offset)
static long
get_long(long address)
static long
get_long(Object instance, long offset)
static short
get_short(long address)
static short
get_short(Object instance, long offset)
static long
getDirectByteBufferAddress(ByteBuffer directBuffer)
static Object
getObject(Object instance, long offset)
static long
getPositionLimit(ByteBuffer buffer)
static ByteBuffer
guaranteeDirectByteBuffer(ByteBuffer directBuffer)
static void
guaranteeUsability()
static <T> T
instantiateBlank(Class<T> c)
static boolean
isBigEndianNativeOrder()
static boolean
isDirectByteBuffer(ByteBuffer byteBuffer)
static boolean
isLittleEndianNativeOrder()
static MemoryAccessor
memoryAccessor()
static MemoryAccessor
memoryAccessorReversing()
static MemorySizeProperties
memorySizeProperties()
static ByteOrder
nativeByteOrder()
static long
objectFieldOffset(Class<?> c, Field field)
static long
objectFieldOffset(Field field)
static long[]
objectFieldOffsets(Class<?> c, Field[] fields)
static long[]
objectFieldOffsets(Field[] fields)
static int
pageSize()
static ByteOrder
parseByteOrder(String name)
Parses aString
instance to aByteOrder
instance according toByteOrder#toString()
or throws anIllegalArgumentException
if the passed string does not match exactly one of theByteOrder
constant instances' string representation.static long
reallocate(long address, long bytes)
static void
set_boolean(long address, boolean value)
static void
set_boolean(Object instance, long offset, boolean value)
static void
set_booleanInBytes(byte[] bytes, int index, boolean value)
static void
set_byte(long address, byte value)
static void
set_byte(Object instance, long offset, byte value)
static void
set_byteInBytes(byte[] bytes, int index, byte value)
static void
set_char(long address, char value)
static void
set_char(Object instance, long offset, char value)
static void
set_charInBytes(byte[] bytes, int index, char value)
static void
set_double(long address, double value)
static void
set_double(Object instance, long offset, double value)
static void
set_doubleInBytes(byte[] bytes, int index, double value)
static void
set_float(long address, float value)
static void
set_float(Object instance, long offset, float value)
static void
set_floatInBytes(byte[] bytes, int index, float value)
static void
set_int(long address, int value)
static void
set_int(Object instance, long offset, int value)
static void
set_intInBytes(byte[] bytes, int index, int value)
static void
set_long(long address, long value)
static void
set_long(Object instance, long offset, long value)
static void
set_longInBytes(byte[] bytes, int index, long value)
static void
set_short(long address, short value)
static void
set_short(Object instance, long offset, short value)
static void
set_shortInBytes(byte[] bytes, int index, short value)
static void
setMemoryAccessor(MemoryAccessor memoryAccessor)
static <H extends MemoryAccessor & MemorySizeProperties>
voidsetMemoryHandling(H memoryHandler)
static void
setMemoryHandling(MemoryAccessor memoryAccessor, MemorySizeProperties memorySizeProperties)
static void
setObject(Object instance, long offset, Object value)
static ByteBuffer
setPositionLimit(ByteBuffer buffer, int position, int limit)
static ByteBuffer
setPositionLimit(ByteBuffer buffer, long positionLimit)
static ByteBuffer
slice(ByteBuffer source, long position, long limit)
static byte[]
toArray(ByteBuffer source)
static byte[]
toArray(ByteBuffer[] sources)
static byte[]
toArray(ByteBuffer source, int position, int length)
static ByteBuffer
toDirectByteBuffer(byte[] bytes)
-
Method Details
-
setMemoryHandling
public static final <H extends MemoryAccessor & MemorySizeProperties> void setMemoryHandling(H memoryHandler) -
setMemoryAccessor
-
setMemoryHandling
public static final void setMemoryHandling(MemoryAccessor memoryAccessor, MemorySizeProperties memorySizeProperties) -
memoryAccessor
-
memoryAccessorReversing
-
memorySizeProperties
-
guaranteeUsability
public static final void guaranteeUsability() -
getDirectByteBufferAddress
-
deallocateDirectByteBuffer
-
isDirectByteBuffer
-
guaranteeDirectByteBuffer
-
allocate
public static final long allocate(long bytes) -
reallocate
public static final long reallocate(long address, long bytes) -
free
public static final void free(long address) -
fillMemory
public static final void fillMemory(long address, long length, byte value) -
defaultBufferSize
public static final int defaultBufferSize()Arbitrary value that coincidentally matches most hardware's standard page sizes without being hard-tied to an actual pageSize system value. So this value is an educated guess and almost always a "good" value when paged-sized-ish buffer sizes are needed, while still not being at the mercy of an OS's JVM implementation.- Returns:
- a "good" value for a paged-sized-ish default buffer size.
-
pageSize
public static final int pageSize() -
byteSizeInstance
-
byteSizeObjectHeader
-
byteSizeFieldValue
-
byteSizeFieldValue
-
byteSizeArray_byte
public static final long byteSizeArray_byte(long elementCount) -
byteSizeArray_boolean
public static final long byteSizeArray_boolean(long elementCount) -
byteSizeArray_short
public static final long byteSizeArray_short(long elementCount) -
byteSizeArray_char
public static final long byteSizeArray_char(long elementCount) -
byteSizeArray_int
public static final long byteSizeArray_int(long elementCount) -
byteSizeArray_float
public static final long byteSizeArray_float(long elementCount) -
byteSizeArray_long
public static final long byteSizeArray_long(long elementCount) -
byteSizeArray_double
public static final long byteSizeArray_double(long elementCount) -
byteSizeArrayObject
public static final long byteSizeArrayObject(long elementCount) -
byteSizePrimitive
-
bitSize_byte
public static final int bitSize_byte() -
byteSize_byte
public static final int byteSize_byte() -
byteSize_boolean
public static final int byteSize_boolean() -
byteSize_short
public static final int byteSize_short() -
byteSize_char
public static final int byteSize_char() -
byteSize_int
public static final int byteSize_int() -
byteSize_float
public static final int byteSize_float() -
byteSize_long
public static final int byteSize_long() -
byteSize_double
public static final int byteSize_double() -
byteSizeReference
public static final int byteSizeReference() -
bitSize_boolean
public static final int bitSize_boolean() -
bitSize_short
public static final int bitSize_short() -
bitSize_char
public static final int bitSize_char() -
bitSize_int
public static final int bitSize_int() -
bitSize_float
public static final int bitSize_float() -
bitSize_long
public static final int bitSize_long() -
bitSize_double
public static final int bitSize_double() -
objectFieldOffset
-
objectFieldOffsets
-
objectFieldOffset
-
objectFieldOffsets
-
get_byte
public static final byte get_byte(long address) -
get_boolean
public static final boolean get_boolean(long address) -
get_short
public static final short get_short(long address) -
get_char
public static final char get_char(long address) -
get_int
public static final int get_int(long address) -
get_float
public static final float get_float(long address) -
get_long
public static final long get_long(long address) -
get_double
public static final double get_double(long address) -
get_byte
-
get_boolean
-
get_short
-
get_char
-
get_int
-
get_float
-
get_long
-
get_double
-
getObject
-
set_byte
public static final void set_byte(long address, byte value) -
set_boolean
public static final void set_boolean(long address, boolean value) -
set_short
public static final void set_short(long address, short value) -
set_char
public static final void set_char(long address, char value) -
set_int
public static final void set_int(long address, int value) -
set_float
public static final void set_float(long address, float value) -
set_long
public static final void set_long(long address, long value) -
set_double
public static final void set_double(long address, double value) -
set_byte
-
set_boolean
-
set_short
-
set_char
-
set_int
-
set_float
-
set_long
-
set_double
-
setObject
-
set_byteInBytes
public static final void set_byteInBytes(byte[] bytes, int index, byte value) -
set_booleanInBytes
public static final void set_booleanInBytes(byte[] bytes, int index, boolean value) -
set_shortInBytes
public static final void set_shortInBytes(byte[] bytes, int index, short value) -
set_charInBytes
public static final void set_charInBytes(byte[] bytes, int index, char value) -
set_intInBytes
public static final void set_intInBytes(byte[] bytes, int index, int value) -
set_floatInBytes
public static final void set_floatInBytes(byte[] bytes, int index, float value) -
set_longInBytes
public static final void set_longInBytes(byte[] bytes, int index, long value) -
set_doubleInBytes
public static final void set_doubleInBytes(byte[] bytes, int index, double value) -
copyRange
public static final void copyRange(long sourceAddress, long targetAddress, long length) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, byte[] target) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, boolean[] target) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, short[] target) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, char[] target) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, int[] target) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, float[] target) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, long[] target) -
copyRangeToArray
public static final void copyRangeToArray(long sourceAddress, double[] target) -
copyArrayToAddress
public static final void copyArrayToAddress(byte[] array, long targetAddress) -
copyArrayToAddress
public static final void copyArrayToAddress(boolean[] array, long targetAddress) -
copyArrayToAddress
public static final void copyArrayToAddress(short[] array, long targetAddress) -
copyArrayToAddress
public static final void copyArrayToAddress(char[] array, long targetAddress) -
copyArrayToAddress
public static final void copyArrayToAddress(int[] array, long targetAddress) -
copyArrayToAddress
public static final void copyArrayToAddress(float[] array, long targetAddress) -
copyArrayToAddress
public static final void copyArrayToAddress(long[] array, long targetAddress) -
copyArrayToAddress
public static final void copyArrayToAddress(double[] array, long targetAddress) -
asByteArray
public static final byte[] asByteArray(long[] longArray) -
asByteArray
public static final byte[] asByteArray(long value) -
ensureClassInitialized
-
ensureClassInitialized
-
instantiateBlank
- Throws:
InstantiationRuntimeException
-
nativeByteOrder
-
isBigEndianNativeOrder
public static final boolean isBigEndianNativeOrder() -
isLittleEndianNativeOrder
public static final boolean isLittleEndianNativeOrder() -
parseByteOrder
Parses aString
instance to aByteOrder
instance according toByteOrder#toString()
or throws anIllegalArgumentException
if the passed string does not match exactly one of theByteOrder
constant instances' string representation.- Parameters:
name
- the string representing theByteOrder
instance to be parsed.- Returns:
- the recognized
ByteOrder
- Throws:
IllegalArgumentException
- if the string can't be recognized as aByteOrder
constant instance.- See Also:
ByteOrder.toString()
-
allocateDirectNative
Alias forByteBuffer.allocateDirect(capacity).order(ByteOrder.nativeOrder())
. SeeByteBuffer.allocateDirect(int)
for details.- Parameters:
capacity
- The new buffer's capacity, in bytes- Returns:
- a newly created direct byte buffer with the specified capacity and the platform's native byte order.
- Throws:
IllegalArgumentException
- If thecapacity
is a negative integer.- See Also:
ByteBuffer.allocateDirect(int)
,ByteBuffer.order(ByteOrder)
-
allocateDirectNative
- Throws:
IllegalArgumentException
-
allocateDirectNativeDefault
-
toArray
-
toArray
-
toArray
-
toDirectByteBuffer
-
getPositionLimit
-
setPositionLimit
-
setPositionLimit
-
capLimit
-
clearForLimit
-
slice
-