# Class Unsafe

java.lang.Object
sun.misc.Unsafe

public final class Unsafe extends Object
A collection of methods for performing low-level, unsafe operations. Although the class and all methods are public, use of this class is limited because only trusted code can obtain instances of it. Note: It is the responsibility of the caller to make sure arguments are checked before methods of this class are called. While some rudimentary checks are performed on the input, the checks are best effort and when performance is an overriding priority, as when methods of this class are optimized by the runtime compiler, some or all checks (if any) may be elided. Hence, the caller must not rely on the checks and corresponding exceptions!

See Also:
  - `getUnsafe()`
API Note:
  This class pre-dates the introduction of `VarHandle`, low-level access to memory with java.lang.foreign, and other standard APIs. New code should not use this API.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `ADDRESS_SIZE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `ValueLayout.ADDRESS`.`MemoryLayout.byteSize()` instead.
  `static final int`
  `ARRAY_BOOLEAN_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_BOOLEAN_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_BYTE_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_BYTE_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_CHAR_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_CHAR_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_DOUBLE_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_DOUBLE_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_FLOAT_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_FLOAT_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_INT_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_INT_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_LONG_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_LONG_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_OBJECT_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_OBJECT_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_SHORT_BASE_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `ARRAY_SHORT_INDEX_SCALE`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `static final int`
  `INVALID_FIELD_OFFSET`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `addressSize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `ValueLayout.ADDRESS`.`MemoryLayout.byteSize()` instead.
  `Object`
  `allocateInstance(Class<?> cls)`
  Allocates an instance but does not run any constructor.
  `long`
  `allocateMemory(long bytes)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to allocate off-heap memory.
  `int`
  `arrayBaseOffset(Class<?> arrayClass)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `int`
  `arrayIndexScale(Class<?> arrayClass)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Not needed when using `VarHandle` or `java.lang.foreign`.
  `final boolean`
  `compareAndSwapInt(Object o, long offset, int expected, int x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.compareAndExchange(Object...)` instead.
  `final boolean`
  `compareAndSwapLong(Object o, long offset, long expected, long x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.compareAndExchange(Object...)` instead.
  `final boolean`
  `compareAndSwapObject(Object o, long offset, Object expected, Object x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.compareAndExchange(Object...)` instead.
  `void`
  `copyMemory(long srcAddress, long destAddress, long bytes)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `MemorySegment` and its bulk copy methods instead.
  `void`
  `copyMemory(Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `MemorySegment` and its bulk copy methods instead.
  `void`
  `freeMemory(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to allocate and free off-heap memory.
  `void`
  `fullFence()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.fullFence()` instead.
  `long`
  `getAddress(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `final int`
  `getAndAddInt(Object o, long offset, int delta)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getAndAdd(Object...)` instead.
  `final long`
  `getAndAddLong(Object o, long offset, long delta)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getAndAdd(Object...)` instead.
  `final int`
  `getAndSetInt(Object o, long offset, int newValue)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getAndAdd(Object...)` instead.
  `final long`
  `getAndSetLong(Object o, long offset, long newValue)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getAndAdd(Object...)` instead.
  `final Object`
  `getAndSetObject(Object o, long offset, Object newValue)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getAndAdd(Object...)` instead.
  `boolean`
  `getBoolean(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfBoolean, long)` instead.
  `boolean`
  `getBooleanVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `byte`
  `getByte(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `byte`
  `getByte(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfByte, long)` instead.
  `byte`
  `getByteVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `char`
  `getChar(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `char`
  `getChar(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfChar, long)` instead.
  `char`
  `getCharVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `double`
  `getDouble(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `double`
  `getDouble(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfDouble, long)` instead.
  `double`
  `getDoubleVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `float`
  `getFloat(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `float`
  `getFloat(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfFloat, long)` instead.
  `float`
  `getFloatVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `int`
  `getInt(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `int`
  `getInt(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfInt, long)` instead.
  `int`
  `getIntVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `int`
  `getLoadAverage(double[] loadavg, int nelems)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use
  invalid reference

      java.management/java.lang.management.OperatingSystemMXBean#getSystemLoadAverage()

  instead.
  `long`
  `getLong(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `long`
  `getLong(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfLong, long)` instead.
  `long`
  `getLongVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `Object`
  `getObject(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` instead.
  `Object`
  `getObjectVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `short`
  `getShort(long address)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `short`
  `getShort(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfShort, long)` instead.
  `short`
  `getShortVolatile(Object o, long offset)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.getVolatile(Object...)` instead.
  `static Unsafe`
  `getUnsafe()`
  Provides the caller with the capability of performing unsafe operations.
  `void`
  `invokeCleaner(ByteBuffer directBuffer)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use a `MemorySegment` allocated in an `Arena` with the appropriate temporal bounds.
  `void`
  `loadFence()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.acquireFence()` instead.
  `long`
  `objectFieldOffset(Field f)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  The guarantee that a field will always have the same offset and base may not be true in a future release.
  `int`
  `pageSize()`
  Reports the size in bytes of a native memory page (whatever that is).
  `void`
  `park(boolean isAbsolute, long time)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `LockSupport.parkNanos(long)` or `LockSupport.parkUntil(long)` instead.
  `void`
  `putAddress(long address, long x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putBoolean(Object o, long offset, boolean x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfBoolean, long, boolean)` instead.
  `void`
  `putBooleanVolatile(Object o, long offset, boolean x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putByte(long address, byte x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putByte(Object o, long offset, byte x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfByte, long, byte)` instead.
  `void`
  `putByteVolatile(Object o, long offset, byte x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putChar(long address, char x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putChar(Object o, long offset, char x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfChar, long, char)` instead.
  `void`
  `putCharVolatile(Object o, long offset, char x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putDouble(long address, double x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putDouble(Object o, long offset, double x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfDouble, long, double)` instead.
  `void`
  `putDoubleVolatile(Object o, long offset, double x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putFloat(long address, float x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putFloat(Object o, long offset, float x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfFloat, long, float)` instead.
  `void`
  `putFloatVolatile(Object o, long offset, float x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putInt(long address, int x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putInt(Object o, long offset, int x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfInt, long, int)` instead.
  `void`
  `putIntVolatile(Object o, long offset, int x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putLong(long address, long x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putLong(Object o, long offset, long x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfLong, long, long)` instead.
  `void`
  `putLongVolatile(Object o, long offset, long x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putObject(Object o, long offset, Object x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` instead.
  `void`
  `putObjectVolatile(Object o, long offset, Object x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `void`
  `putOrderedInt(Object o, long offset, int x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setRelease(Object...)` instead.
  `void`
  `putOrderedLong(Object o, long offset, long x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setRelease(Object...)` instead.
  `void`
  `putOrderedObject(Object o, long offset, Object x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setRelease(Object...)` instead.
  `void`
  `putShort(long address, short x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to access off-heap memory.
  `void`
  `putShort(Object o, long offset, short x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfShort, long, short)` instead.
  `void`
  `putShortVolatile(Object o, long offset, short x)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.setVolatile(Object...)` instead.
  `long`
  `reallocateMemory(long address, long bytes)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `java.lang.foreign` to allocate off-heap memory.
  `void`
  `setMemory(long address, long bytes, byte value)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  `MemorySegment.fill(byte)` fills the contents of a memory segment with a given value.
  `void`
  `setMemory(Object o, long offset, long bytes, byte value)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  `MemorySegment.fill(byte)` fills the contents of a memory segment with a given value.
  `Object`
  `staticFieldBase(Field f)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  The guarantee that a field will always have the same offset and base may not be true in a future release.
  `long`
  `staticFieldOffset(Field f)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  The guarantee that a field will always have the same offset and base may not be true in a future release.
  `void`
  `storeFence()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `VarHandle.releaseFence()` instead.
  `void`
  `throwException(Throwable ee)`
  Throws the exception without telling the verifier.
  `void`
  `unpark(Object thread)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `LockSupport.unpark(Thread)` instead.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### INVALID_FIELD_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int INVALID_FIELD_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    This constant differs from all results that will ever be returned from `staticFieldOffset(java.lang.reflect.Field)`, `objectFieldOffset(java.lang.reflect.Field)`, or `arrayBaseOffset(java.lang.Class<?>)`.
    See Also:
      - Constant Field Values

  - ### ARRAY_BOOLEAN_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_BOOLEAN_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(boolean[].class)`.

  - ### ARRAY_BYTE_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_BYTE_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(byte[].class)`.

  - ### ARRAY_SHORT_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_SHORT_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(short[].class)`.

  - ### ARRAY_CHAR_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_CHAR_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(char[].class)`.

  - ### ARRAY_INT_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_INT_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(int[].class)`.

  - ### ARRAY_LONG_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_LONG_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(long[].class)`.

  - ### ARRAY_FLOAT_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_FLOAT_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(float[].class)`.

  - ### ARRAY_DOUBLE_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_DOUBLE_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(double[].class)`.

  - ### ARRAY_OBJECT_BASE_OFFSET

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_OBJECT_BASE_OFFSET
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayBaseOffset(Object[].class)`.

  - ### ARRAY_BOOLEAN_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_BOOLEAN_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(boolean[].class)`.

  - ### ARRAY_BYTE_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_BYTE_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(byte[].class)`.

  - ### ARRAY_SHORT_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_SHORT_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(short[].class)`.

  - ### ARRAY_CHAR_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_CHAR_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(char[].class)`.

  - ### ARRAY_INT_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_INT_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(int[].class)`.

  - ### ARRAY_LONG_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_LONG_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(long[].class)`.

  - ### ARRAY_FLOAT_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_FLOAT_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(float[].class)`.

  - ### ARRAY_DOUBLE_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_DOUBLE_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(double[].class)`.

  - ### ARRAY_OBJECT_INDEX_SCALE

    @Deprecated(since="23", forRemoval=true) public static final int ARRAY_OBJECT_INDEX_SCALE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    The value of `arrayIndexScale(Object[].class)`.

  - ### ADDRESS_SIZE

    @Deprecated(since="23", forRemoval=true) public static final int ADDRESS_SIZE
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `ValueLayout.ADDRESS`.`MemoryLayout.byteSize()` instead.
    The value of `addressSize()`.

- ## Method Details

  - ### getUnsafe

    public static Unsafe getUnsafe()
    Provides the caller with the capability of performing unsafe operations.

    The returned `Unsafe` object should be carefully guarded by the caller, since it can be used to read and write data at arbitrary memory addresses. It must never be passed to untrusted code.

    Most methods in this class are very low-level, and correspond to a small number of hardware instructions (on typical machines). Compilers are encouraged to optimize these methods accordingly.

    Here is a suggested idiom for using unsafe operations:

         class MyTrustedClass {
           private static final Unsafe unsafe = Unsafe.getUnsafe();
           ...
           private long myCountAddress = ...;
           public int getCount() { return unsafe.getByte(myCountAddress); }
         }

    (It may assist compilers to make the local variable `final`.)
    Throws:
      `SecurityException` - if the class loader of the caller class is not in the system domain in which all permissions are granted.

  - ### getInt

    @Deprecated(since="23", forRemoval=true) public int getInt(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfInt, long)` instead.
    Fetches a value from a given Java variable. More specifically, fetches a field or array element within the given object `o` at the given offset, or (if `o` is null) from the memory address whose numerical value is the given offset.

    The results are undefined unless one of the following cases is true:

    - The offset was obtained from `objectFieldOffset(java.lang.reflect.Field)` on the `Field` of some Java field and the object referred to by `o` is of a class compatible with that field's class.
    - The offset and object reference `o` (either null or non-null) were both obtained via `staticFieldOffset(java.lang.reflect.Field)` and `staticFieldBase(java.lang.reflect.Field)` (respectively) from the reflective `Field` representation of some Java field.
    - The object referred to by `o` is an array, and the offset is an integer of the form `B+N*S`, where `N` is a valid index into the array, and `B` and `S` are the values obtained by `arrayBaseOffset(java.lang.Class<?>)` and `arrayIndexScale(java.lang.Class<?>)` (respectively) from the array's class. The value referred to is the `N` th element of the array.

    If one of the above cases is true, the call references a specific Java variable (field or array element). However, the results are undefined if that variable is not in fact of the type returned by this method.

    This method refers to a variable by means of two parameters, and so it provides (in effect) a double-register addressing mode for Java variables. When the object reference is null, this method uses its offset as an absolute address. This is similar in operation to methods such as `getInt(long)`, which provide (in effect) a single-register addressing mode for non-Java variables. However, because Java variables may have a different layout in memory from non-Java variables, programmers should not assume that these two addressing modes are ever equivalent. Also, programmers should remember that offsets from the double-register addressing mode cannot be portably confused with longs used in the single-register addressing mode.

    Parameters:
      `o` - Java heap object in which the variable resides, if any, else null
      `offset` - indication of where the variable resides in a Java heap object, if any, else a memory address locating the variable statically
    Returns:
      the value fetched from the indicated Java variable
    Throws:
      `RuntimeException` - No defined exceptions are thrown, not even `NullPointerException`

  - ### putInt

    @Deprecated(since="23", forRemoval=true) public void putInt(Object o, long offset, int x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfInt, long, int)` instead.
    Stores a value into a given Java variable.

    The first two parameters are interpreted exactly as with `getInt(Object, long)` to refer to a specific Java variable (field or array element). The given value is stored into that variable.

    The variable must be of the same type as the method parameter `x`.

    Parameters:
      `o` - Java heap object in which the variable resides, if any, else null
      `offset` - indication of where the variable resides in a Java heap object, if any, else a memory address locating the variable statically
      `x` - the value to store into the indicated Java variable
    Throws:
      `RuntimeException` - No defined exceptions are thrown, not even `NullPointerException`

  - ### getObject

    @Deprecated(since="23", forRemoval=true) public Object getObject(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` instead.
    Fetches a reference value from a given Java variable.

  - ### putObject

    @Deprecated(since="23", forRemoval=true) public void putObject(Object o, long offset, Object x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` instead.
    Stores a reference value into a given Java variable.

    Unless the reference `x` being stored is either null or matches the field type, the results are undefined. If the reference `o` is non-null, card marks or other store barriers for that object (if the VM requires them) are updated.

  - ### getBoolean

    @Deprecated(since="23", forRemoval=true) public boolean getBoolean(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfBoolean, long)` instead.
    See Also:
      - `getInt(Object, long)`

  - ### putBoolean

    @Deprecated(since="23", forRemoval=true) public void putBoolean(Object o, long offset, boolean x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfBoolean, long, boolean)` instead.
    See Also:
      - `putInt(Object, long, int)`

  - ### getByte

    @Deprecated(since="23", forRemoval=true) public byte getByte(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfByte, long)` instead.
    See Also:
      - `getInt(Object, long)`

  - ### putByte

    @Deprecated(since="23", forRemoval=true) public void putByte(Object o, long offset, byte x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfByte, long, byte)` instead.
    See Also:
      - `putInt(Object, long, int)`

  - ### getShort

    @Deprecated(since="23", forRemoval=true) public short getShort(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfShort, long)` instead.
    See Also:
      - `getInt(Object, long)`

  - ### putShort

    @Deprecated(since="23", forRemoval=true) public void putShort(Object o, long offset, short x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfShort, long, short)` instead.
    See Also:
      - `putInt(Object, long, int)`

  - ### getChar

    @Deprecated(since="23", forRemoval=true) public char getChar(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfChar, long)` instead.
    See Also:
      - `getInt(Object, long)`

  - ### putChar

    @Deprecated(since="23", forRemoval=true) public void putChar(Object o, long offset, char x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfChar, long, char)` instead.
    See Also:
      - `putInt(Object, long, int)`

  - ### getLong

    @Deprecated(since="23", forRemoval=true) public long getLong(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfLong, long)` instead.
    See Also:
      - `getInt(Object, long)`

  - ### putLong

    @Deprecated(since="23", forRemoval=true) public void putLong(Object o, long offset, long x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfLong, long, long)` instead.
    See Also:
      - `putInt(Object, long, int)`

  - ### getFloat

    @Deprecated(since="23", forRemoval=true) public float getFloat(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfFloat, long)` instead.
    See Also:
      - `getInt(Object, long)`

  - ### putFloat

    @Deprecated(since="23", forRemoval=true) public void putFloat(Object o, long offset, float x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfFloat, long, float)` instead.
    See Also:
      - `putInt(Object, long, int)`

  - ### getDouble

    @Deprecated(since="23", forRemoval=true) public double getDouble(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.get(Object...)` or `MemorySegment.get(ValueLayout.OfDouble, long)` instead.
    See Also:
      - `getInt(Object, long)`

  - ### putDouble

    @Deprecated(since="23", forRemoval=true) public void putDouble(Object o, long offset, double x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.set(Object...)` or `MemorySegment.set(ValueLayout.OfDouble, long, double)` instead.
    See Also:
      - `putInt(Object, long, int)`

  - ### getByte

    @Deprecated(since="23", forRemoval=true) public byte getByte(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    Fetches a value from a given memory address. If the address is zero, or does not point into a block obtained from `allocateMemory(long)`, the results are undefined.
    See Also:
      - `allocateMemory(long)`

  - ### putByte

    @Deprecated(since="23", forRemoval=true) public void putByte(long address, byte x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    Stores a value into a given memory address. If the address is zero, or does not point into a block obtained from `allocateMemory(long)`, the results are undefined.
    See Also:
      - `getByte(long)`

  - ### getShort

    @Deprecated(since="23", forRemoval=true) public short getShort(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `getByte(long)`

  - ### putShort

    @Deprecated(since="23", forRemoval=true) public void putShort(long address, short x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `putByte(long, byte)`

  - ### getChar

    @Deprecated(since="23", forRemoval=true) public char getChar(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `getByte(long)`

  - ### putChar

    @Deprecated(since="23", forRemoval=true) public void putChar(long address, char x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `putByte(long, byte)`

  - ### getInt

    @Deprecated(since="23", forRemoval=true) public int getInt(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `getByte(long)`

  - ### putInt

    @Deprecated(since="23", forRemoval=true) public void putInt(long address, int x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `putByte(long, byte)`

  - ### getLong

    @Deprecated(since="23", forRemoval=true) public long getLong(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `getByte(long)`

  - ### putLong

    @Deprecated(since="23", forRemoval=true) public void putLong(long address, long x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `putByte(long, byte)`

  - ### getFloat

    @Deprecated(since="23", forRemoval=true) public float getFloat(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `getByte(long)`

  - ### putFloat

    @Deprecated(since="23", forRemoval=true) public void putFloat(long address, float x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `putByte(long, byte)`

  - ### getDouble

    @Deprecated(since="23", forRemoval=true) public double getDouble(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `getByte(long)`

  - ### putDouble

    @Deprecated(since="23", forRemoval=true) public void putDouble(long address, double x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    See Also:
      - `putByte(long, byte)`

  - ### getAddress

    @Deprecated(since="23", forRemoval=true) public long getAddress(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    Fetches a native pointer from a given memory address. If the address is zero, or does not point into a block obtained from `allocateMemory(long)`, the results are undefined.

    If the native pointer is less than 64 bits wide, it is extended as an unsigned number to a Java long. The pointer may be indexed by any given byte offset, simply by adding that offset (as a simple integer) to the long representing the pointer. The number of bytes actually read from the target address may be determined by consulting `addressSize()`.

    See Also:
      - `allocateMemory(long)`

  - ### putAddress

    @Deprecated(since="23", forRemoval=true) public void putAddress(long address, long x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to access off-heap memory.
    Stores a native pointer into a given memory address. If the address is zero, or does not point into a block obtained from `allocateMemory(long)`, the results are undefined.

    The number of bytes actually written at the target address may be determined by consulting `addressSize()`.

    See Also:
      - `getAddress(long)`

  - ### allocateMemory

    @Deprecated(since="23", forRemoval=true) public long allocateMemory(long bytes)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to allocate off-heap memory.
    Allocates a new block of native memory, of the given size in bytes. The contents of the memory are uninitialized; they will generally be garbage. The resulting native pointer will be zero if and only if the requested size is zero. The resulting native pointer will be aligned for all value types. Dispose of this memory by calling `freeMemory(long)` or resize it with `reallocateMemory(long, long)`. Note: It is the responsibility of the caller to make sure arguments are checked before the methods are called. While some rudimentary checks are performed on the input, the checks are best effort and when performance is an overriding priority, as when methods of this class are optimized by the runtime compiler, some or all checks (if any) may be elided. Hence, the caller must not rely on the checks and corresponding exceptions!
    Throws:
      `RuntimeException` - if the size is negative or too large for the native size_t type
      `OutOfMemoryError` - if the allocation is refused by the system
    See Also:
      - `getByte(long)`
      - `putByte(long, byte)`

  - ### reallocateMemory

    @Deprecated(since="23", forRemoval=true) public long reallocateMemory(long address, long bytes)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to allocate off-heap memory.
    Resizes a new block of native memory, to the given size in bytes. The contents of the new block past the size of the old block are uninitialized; they will generally be garbage. The resulting native pointer will be zero if and only if the requested size is zero. The resulting native pointer will be aligned for all value types. Dispose of this memory by calling `freeMemory(long)`, or resize it with `reallocateMemory(long, long)`. The address passed to this method may be null, in which case an allocation will be performed. Note: It is the responsibility of the caller to make sure arguments are checked before the methods are called. While some rudimentary checks are performed on the input, the checks are best effort and when performance is an overriding priority, as when methods of this class are optimized by the runtime compiler, some or all checks (if any) may be elided. Hence, the caller must not rely on the checks and corresponding exceptions!
    Throws:
      `RuntimeException` - if the size is negative or too large for the native size_t type
      `OutOfMemoryError` - if the allocation is refused by the system
    See Also:
      - `allocateMemory(long)`

  - ### setMemory

    @Deprecated(since="23", forRemoval=true) public void setMemory(Object o, long offset, long bytes, byte value)
    Deprecated, for removal: This API element is subject to removal in a future version.
    `MemorySegment.fill(byte)` fills the contents of a memory segment with a given value.
    Sets all bytes in a given block of memory to a fixed value (usually zero).

    This method determines a block's base address by means of two parameters, and so it provides (in effect) a double-register addressing mode, as discussed in `getInt(Object,long)`. When the object reference is null, the offset supplies an absolute base address.

    The stores are in coherent (atomic) units of a size determined by the address and length parameters. If the effective address and length are all even modulo 8, the stores take place in 'long' units. If the effective address and length are (resp.) even modulo 4 or 2, the stores take place in units of 'int' or 'short'. Note: It is the responsibility of the caller to make sure arguments are checked before the methods are called. While some rudimentary checks are performed on the input, the checks are best effort and when performance is an overriding priority, as when methods of this class are optimized by the runtime compiler, some or all checks (if any) may be elided. Hence, the caller must not rely on the checks and corresponding exceptions!

    Throws:
      `RuntimeException` - if any of the arguments is invalid
    Since:
      1.7

  - ### setMemory

    @Deprecated(since="23", forRemoval=true) public void setMemory(long address, long bytes, byte value)
    Deprecated, for removal: This API element is subject to removal in a future version.
    `MemorySegment.fill(byte)` fills the contents of a memory segment with a given value. Use `MemorySegment` and its bulk copy methods instead.
    Sets all bytes in a given block of memory to a fixed value (usually zero). This provides a single-register addressing mode, as discussed in `getInt(Object,long)`.

    Equivalent to `setMemory(null, address, bytes, value)`.

  - ### copyMemory

    @Deprecated(since="23", forRemoval=true) public void copyMemory(Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `MemorySegment` and its bulk copy methods instead.
    Sets all bytes in a given block of memory to a copy of another block.

    This method determines each block's base address by means of two parameters, and so it provides (in effect) a double-register addressing mode, as discussed in `getInt(Object,long)`. When the object reference is null, the offset supplies an absolute base address.

    The transfers are in coherent (atomic) units of a size determined by the address and length parameters. If the effective addresses and length are all even modulo 8, the transfer takes place in 'long' units. If the effective addresses and length are (resp.) even modulo 4 or 2, the transfer takes place in units of 'int' or 'short'. Note: It is the responsibility of the caller to make sure arguments are checked before the methods are called. While some rudimentary checks are performed on the input, the checks are best effort and when performance is an overriding priority, as when methods of this class are optimized by the runtime compiler, some or all checks (if any) may be elided. Hence, the caller must not rely on the checks and corresponding exceptions!

    Throws:
      `RuntimeException` - if any of the arguments is invalid
    Since:
      1.7

  - ### copyMemory

    @Deprecated(since="23", forRemoval=true) public void copyMemory(long srcAddress, long destAddress, long bytes)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `MemorySegment` and its bulk copy methods instead.
    Sets all bytes in a given block of memory to a copy of another block. This provides a single-register addressing mode, as discussed in `getInt(Object,long)`. Equivalent to `copyMemory(null, srcAddress, null, destAddress, bytes)`.

  - ### freeMemory

    @Deprecated(since="23", forRemoval=true) public void freeMemory(long address)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `java.lang.foreign` to allocate and free off-heap memory.
    Disposes of a block of native memory, as obtained from `allocateMemory(long)` or `reallocateMemory(long, long)`. The address passed to this method may be null, in which case no action is taken. Note: It is the responsibility of the caller to make sure arguments are checked before the methods are called. While some rudimentary checks are performed on the input, the checks are best effort and when performance is an overriding priority, as when methods of this class are optimized by the runtime compiler, some or all checks (if any) may be elided. Hence, the caller must not rely on the checks and corresponding exceptions!
    Throws:
      `RuntimeException` - if any of the arguments is invalid
    See Also:
      - `allocateMemory(long)`

  - ### objectFieldOffset

    @Deprecated(since="18", forRemoval=true) public long objectFieldOffset(Field f)
    Deprecated, for removal: This API element is subject to removal in a future version.
    The guarantee that a field will always have the same offset and base may not be true in a future release. The ability to provide an offset and object reference to a heap memory accessor will be removed in a future release. Use `VarHandle` instead.
    Reports the location of a given field in the storage allocation of its class. Do not expect to perform any sort of arithmetic on this offset; it is just a cookie which is passed to the unsafe heap memory accessors.

    Any given field will always have the same offset and base, and no two distinct fields of the same class will ever have the same offset and base.

    As of 1.4.1, offsets for fields are represented as long values, although the Sun JVM does not use the most significant 32 bits. However, JVM implementations which store static fields at absolute addresses can use long offsets and null base pointers to express the field locations in a form usable by `getInt(Object,long)`. Therefore, code which will be ported to such JVMs on 64-bit platforms must preserve all bits of static field offsets.

    See Also:
      - `getInt(Object, long)`

  - ### staticFieldOffset

    @Deprecated(since="18", forRemoval=true) public long staticFieldOffset(Field f)
    Deprecated, for removal: This API element is subject to removal in a future version.
    The guarantee that a field will always have the same offset and base may not be true in a future release. The ability to provide an offset and object reference to a heap memory accessor will be removed in a future release. Use `VarHandle` instead.
    Reports the location of a given static field, in conjunction with `staticFieldBase(java.lang.reflect.Field)`.

    Do not expect to perform any sort of arithmetic on this offset; it is just a cookie which is passed to the unsafe heap memory accessors.

    Any given field will always have the same offset, and no two distinct fields of the same class will ever have the same offset.

    As of 1.4.1, offsets for fields are represented as long values, although the Sun JVM does not use the most significant 32 bits. It is hard to imagine a JVM technology which needs more than a few bits to encode an offset within a non-array object, However, for consistency with other methods in this class, this method reports its result as a long value.

    See Also:
      - `getInt(Object, long)`

  - ### staticFieldBase

    @Deprecated(since="18", forRemoval=true) public Object staticFieldBase(Field f)
    Deprecated, for removal: This API element is subject to removal in a future version.
    The guarantee that a field will always have the same offset and base may not be true in a future release. The ability to provide an offset and object reference to a heap memory accessor will be removed in a future release. Use `VarHandle` instead.
    Reports the location of a given static field, in conjunction with `staticFieldOffset(java.lang.reflect.Field)`.

    Fetch the base "Object", if any, with which static fields of the given class can be accessed via methods like `getInt(Object, long)`. This value may be null. This value may refer to an object which is a "cookie", not guaranteed to be a real Object, and it should not be used in any way except as argument to the get and put routines in this class.

  - ### arrayBaseOffset

    @Deprecated(since="23", forRemoval=true) public int arrayBaseOffset(Class<?> arrayClass)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    Reports the offset of the first element in the storage allocation of a given array class. If `arrayIndexScale(java.lang.Class<?>)` returns a non-zero value for the same class, you may use that scale factor, together with this base offset, to form new offsets to access elements of arrays of the given class.
    See Also:
      - `getInt(Object, long)`
      - `putInt(Object, long, int)`

  - ### arrayIndexScale

    @Deprecated(since="23", forRemoval=true) public int arrayIndexScale(Class<?> arrayClass)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Not needed when using `VarHandle` or `java.lang.foreign`.
    Reports the scale factor for addressing elements in the storage allocation of a given array class. However, arrays of "narrow" types will generally not work properly with accessors like `getByte(Object, long)`, so the scale factor for such classes is reported as zero.
    See Also:
      - `arrayBaseOffset(java.lang.Class<?>)`
      - `getInt(Object, long)`
      - `putInt(Object, long, int)`

  - ### addressSize

    @Deprecated(since="23", forRemoval=true) public int addressSize()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `ValueLayout.ADDRESS`.`MemoryLayout.byteSize()` instead.
    Reports the size in bytes of a native pointer, as stored via `putAddress(long, long)`. This value will be either 4 or 8. Note that the sizes of other primitive types (as stored in native memory blocks) is determined fully by their information content.

  - ### pageSize

    public int pageSize()
    Reports the size in bytes of a native memory page (whatever that is). This value will always be a power of two.

  - ### allocateInstance

    public Object allocateInstance(Class<?> cls) throws InstantiationException
    Allocates an instance but does not run any constructor. Initializes the class if it has not yet been.
    Throws:
      `InstantiationException`

  - ### throwException

    public void throwException(Throwable ee)
    Throws the exception without telling the verifier.

  - ### compareAndSwapObject

    @Deprecated(since="23", forRemoval=true) public final boolean compareAndSwapObject(Object o, long offset, Object expected, Object x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.compareAndExchange(Object...)` instead.
    Atomically updates Java variable to `x` if it is currently holding `expected`.

    This operation has memory semantics of a `volatile` read and write. Corresponds to C11 atomic_compare_exchange_strong.

    Returns:
      `true` if successful

  - ### compareAndSwapInt

    @Deprecated(since="23", forRemoval=true) public final boolean compareAndSwapInt(Object o, long offset, int expected, int x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.compareAndExchange(Object...)` instead.
    Atomically updates Java variable to `x` if it is currently holding `expected`.

    This operation has memory semantics of a `volatile` read and write. Corresponds to C11 atomic_compare_exchange_strong.

    Returns:
      `true` if successful

  - ### compareAndSwapLong

    @Deprecated(since="23", forRemoval=true) public final boolean compareAndSwapLong(Object o, long offset, long expected, long x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.compareAndExchange(Object...)` instead.
    Atomically updates Java variable to `x` if it is currently holding `expected`.

    This operation has memory semantics of a `volatile` read and write. Corresponds to C11 atomic_compare_exchange_strong.

    Returns:
      `true` if successful

  - ### getObjectVolatile

    @Deprecated(since="23", forRemoval=true) public Object getObjectVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Fetches a reference value from a given Java variable, with volatile load semantics. Otherwise identical to `getObject(Object, long)`

  - ### putObjectVolatile

    @Deprecated(since="23", forRemoval=true) public void putObjectVolatile(Object o, long offset, Object x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Stores a reference value into a given Java variable, with volatile store semantics. Otherwise identical to `putObject(Object, long, Object)`

  - ### getIntVolatile

    @Deprecated(since="23", forRemoval=true) public int getIntVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getInt(Object, long)`.

  - ### putIntVolatile

    @Deprecated(since="23", forRemoval=true) public void putIntVolatile(Object o, long offset, int x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putInt(Object, long, int)`.

  - ### getBooleanVolatile

    @Deprecated(since="23", forRemoval=true) public boolean getBooleanVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getBoolean(Object, long)`.

  - ### putBooleanVolatile

    @Deprecated(since="23", forRemoval=true) public void putBooleanVolatile(Object o, long offset, boolean x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putBoolean(Object, long, boolean)`.

  - ### getByteVolatile

    @Deprecated(since="23", forRemoval=true) public byte getByteVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getByte(Object, long)`.

  - ### putByteVolatile

    @Deprecated(since="23", forRemoval=true) public void putByteVolatile(Object o, long offset, byte x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putByte(Object, long, byte)`.

  - ### getShortVolatile

    @Deprecated(since="23", forRemoval=true) public short getShortVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getShort(Object, long)`.

  - ### putShortVolatile

    @Deprecated(since="23", forRemoval=true) public void putShortVolatile(Object o, long offset, short x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putShort(Object, long, short)`.

  - ### getCharVolatile

    @Deprecated(since="23", forRemoval=true) public char getCharVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getChar(Object, long)`.

  - ### putCharVolatile

    @Deprecated(since="23", forRemoval=true) public void putCharVolatile(Object o, long offset, char x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putChar(Object, long, char)`.

  - ### getLongVolatile

    @Deprecated(since="23", forRemoval=true) public long getLongVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getLong(Object, long)`.

  - ### putLongVolatile

    @Deprecated(since="23", forRemoval=true) public void putLongVolatile(Object o, long offset, long x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putLong(Object, long, long)`.

  - ### getFloatVolatile

    @Deprecated(since="23", forRemoval=true) public float getFloatVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getFloat(Object, long)`.

  - ### putFloatVolatile

    @Deprecated(since="23", forRemoval=true) public void putFloatVolatile(Object o, long offset, float x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putFloat(Object, long, float)`.

  - ### getDoubleVolatile

    @Deprecated(since="23", forRemoval=true) public double getDoubleVolatile(Object o, long offset)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getVolatile(Object...)` instead.
    Volatile version of `getDouble(Object, long)`.

  - ### putDoubleVolatile

    @Deprecated(since="23", forRemoval=true) public void putDoubleVolatile(Object o, long offset, double x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setVolatile(Object...)` instead.
    Volatile version of `putDouble(Object, long, double)`.

  - ### putOrderedObject

    @Deprecated(since="23", forRemoval=true) public void putOrderedObject(Object o, long offset, Object x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setRelease(Object...)` instead.
    Version of `putObjectVolatile(Object, long, Object)` that does not guarantee immediate visibility of the store to other threads. This method is generally only useful if the underlying field is a Java volatile (or if an array cell, one that is otherwise only accessed using volatile accesses). Corresponds to C11 atomic_store_explicit(..., memory_order_release).

  - ### putOrderedInt

    @Deprecated(since="23", forRemoval=true) public void putOrderedInt(Object o, long offset, int x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setRelease(Object...)` instead.
    Ordered/Lazy version of `putIntVolatile(Object, long, int)`.

  - ### putOrderedLong

    @Deprecated(since="23", forRemoval=true) public void putOrderedLong(Object o, long offset, long x)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.setRelease(Object...)` instead.
    Ordered/Lazy version of `putLongVolatile(Object, long, long)`.

  - ### unpark

    @Deprecated(since="22", forRemoval=true) public void unpark(Object thread)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `LockSupport.unpark(Thread)` instead.
    Unblocks the given thread blocked on `park`, or, if it is not blocked, causes the subsequent call to `park` not to block. Note: this operation is "unsafe" solely because the caller must somehow ensure that the thread has not been destroyed. Nothing special is usually required to ensure this when called from Java (in which there will ordinarily be a live reference to the thread) but this is not nearly-automatically so when calling from native code.
    Parameters:
      `thread` - the thread to unpark.

  - ### park

    @Deprecated(since="22", forRemoval=true) public void park(boolean isAbsolute, long time)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `LockSupport.parkNanos(long)` or `LockSupport.parkUntil(long)` instead.
    Blocks current thread, returning when a balancing `unpark` occurs, or a balancing `unpark` has already occurred, or the thread is interrupted, or, if not absolute and time is not zero, the given time nanoseconds have elapsed, or if absolute, the given deadline in milliseconds since Epoch has passed, or spuriously (i.e., returning for no "reason"). Note: This operation is in the Unsafe class only because `unpark` is, so it would be strange to place it elsewhere.

  - ### getLoadAverage

    @Deprecated(since="22", forRemoval=true) public int getLoadAverage(double[] loadavg, int nelems)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use
    invalid reference

        java.management/java.lang.management.OperatingSystemMXBean#getSystemLoadAverage()

    instead.
    Gets the load average in the system run queue assigned to the available processors averaged over various periods of time. This method retrieves the given `nelem` samples and assigns to the elements of the given `loadavg` array. The system imposes a maximum of 3 samples, representing averages over the last 1, 5, and 15 minutes, respectively.
    Parameters:
      `loadavg` - an array of double of size nelems
      `nelems` - the number of samples to be retrieved and must be 1 to 3.
    Returns:
      the number of samples actually retrieved; or -1 if the load average is unobtainable.

  - ### getAndAddInt

    @Deprecated(since="23", forRemoval=true) public final int getAndAddInt(Object o, long offset, int delta)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getAndAdd(Object...)` instead.
    Atomically adds the given value to the current value of a field or array element within the given object `o` at the given `offset`.
    Parameters:
      `o` - object/array to update the field/element in
      `offset` - field/element offset
      `delta` - the value to add
    Returns:
      the previous value
    Since:
      1.8

  - ### getAndAddLong

    @Deprecated(since="23", forRemoval=true) public final long getAndAddLong(Object o, long offset, long delta)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getAndAdd(Object...)` instead.
    Atomically adds the given value to the current value of a field or array element within the given object `o` at the given `offset`.
    Parameters:
      `o` - object/array to update the field/element in
      `offset` - field/element offset
      `delta` - the value to add
    Returns:
      the previous value
    Since:
      1.8

  - ### getAndSetInt

    @Deprecated(since="23", forRemoval=true) public final int getAndSetInt(Object o, long offset, int newValue)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getAndAdd(Object...)` instead.
    Atomically exchanges the given value with the current value of a field or array element within the given object `o` at the given `offset`.
    Parameters:
      `o` - object/array to update the field/element in
      `offset` - field/element offset
      `newValue` - new value
    Returns:
      the previous value
    Since:
      1.8

  - ### getAndSetLong

    @Deprecated(since="23", forRemoval=true) public final long getAndSetLong(Object o, long offset, long newValue)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getAndAdd(Object...)` instead.
    Atomically exchanges the given value with the current value of a field or array element within the given object `o` at the given `offset`.
    Parameters:
      `o` - object/array to update the field/element in
      `offset` - field/element offset
      `newValue` - new value
    Returns:
      the previous value
    Since:
      1.8

  - ### getAndSetObject

    @Deprecated(since="23", forRemoval=true) public final Object getAndSetObject(Object o, long offset, Object newValue)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.getAndAdd(Object...)` instead.
    Atomically exchanges the given reference value with the current reference value of a field or array element within the given object `o` at the given `offset`.
    Parameters:
      `o` - object/array to update the field/element in
      `offset` - field/element offset
      `newValue` - new value
    Returns:
      the previous value
    Since:
      1.8

  - ### loadFence

    @Deprecated(since="22", forRemoval=true) public void loadFence()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.acquireFence()` instead.
    Ensures that loads before the fence will not be reordered with loads and stores after the fence; a "LoadLoad plus LoadStore barrier". Corresponds to C11 atomic_thread_fence(memory_order_acquire) (an "acquire fence"). A pure LoadLoad fence is not provided, since the addition of LoadStore is almost always desired, and most current hardware instructions that provide a LoadLoad barrier also provide a LoadStore barrier for free.
    Since:
      1.8

  - ### storeFence

    @Deprecated(since="22", forRemoval=true) public void storeFence()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.releaseFence()` instead.
    Ensures that loads and stores before the fence will not be reordered with stores after the fence; a "StoreStore plus LoadStore barrier". Corresponds to C11 atomic_thread_fence(memory_order_release) (a "release fence"). A pure StoreStore fence is not provided, since the addition of LoadStore is almost always desired, and most current hardware instructions that provide a StoreStore barrier also provide a LoadStore barrier for free.
    Since:
      1.8

  - ### fullFence

    @Deprecated(since="22", forRemoval=true) public void fullFence()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use `VarHandle.fullFence()` instead.
    Ensures that loads and stores before the fence will not be reordered with loads and stores after the fence. Implies the effects of both loadFence() and storeFence(), and in addition, the effect of a StoreLoad barrier. Corresponds to C11 atomic_thread_fence(memory_order_seq_cst).
    Since:
      1.8

  - ### invokeCleaner

    @Deprecated(since="23", forRemoval=true) public void invokeCleaner(ByteBuffer directBuffer)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use a `MemorySegment` allocated in an `Arena` with the appropriate temporal bounds. The `MemorySegment.asByteBuffer()` method wraps a memory segment as a `ByteBuffer` to allow interop with existing code.
    Invokes the given direct byte buffer's cleaner, if any.
    Parameters:
      `directBuffer` - a direct byte buffer
    Throws:
      `NullPointerException` - if `directBuffer` is null
      `IllegalArgumentException` - if `directBuffer` is non-direct, or is a `slice`, or is a `duplicate`
    Since:
      9