Vous ne pouvez pas accéder directement à un emplacement de mémoire! Il doit être géré par la JVM. Une exception de sécurité ou EXCEPTION_ACCESS_VIOLATION
se produit. Cela pourrait planter la JVM elle-même. Mais si nous allouons de la mémoire à partir du code, on peut accéder aux octets.
public static void main(String[] args) {
Unsafe unsafe = null;
try {
Field field = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
unsafe = (sun.misc.Unsafe) field.get(null);
} catch (Exception e) {
throw new AssertionError(e);
}
byte size = 1;//allocate 1 byte
long allocateMemory = unsafe.allocateMemory(size);
//write the bytes
unsafe.putByte(allocateMemory, "a".getBytes()[0]);
byte readValue = unsafe.getByte(allocateMemory);
System.out.println("value : " + new String(new byte[]{ readValue}));
}