Chciałem wiedzieć, czy jest jakiś sposób, aby 64-bitowa maszyna wirtualna używała nagłówków obiektów 8-bajtowych zamiast 12-bajtowych nagłówków obiektów, jeśli używana pamięć RAM dla JVM ma 4 GB.Rozmiar nagłówka obiektu w języku Java na maszynie wirtualnej 64-bitowej z <4 GB pamięci RAM
A może jest tak w systemie Linux, jeśli nie w Windows? Czy ktoś mógłby przetestować to za pomocą tego kodu?
import java.lang.reflect.Field;
import sun.misc.Unsafe;
public class ObjectSizes {
String s1;
String s2;
public static void main(String[] args) throws Exception {
Unsafe unsafe;
try {
Field field = Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
unsafe = (Unsafe)field.get(null);
} catch (Exception ex) {
throw new RuntimeException("Can't get Unsafe instance.", ex);
}
Field s1Field = ObjectSizes.class.getDeclaredField("s1");
Field s2Field = ObjectSizes.class.getDeclaredField("s2");
long s1OffSet = unsafe.objectFieldOffset(s1Field);
long s2OffSet = unsafe.objectFieldOffset(s2Field);
System.out.println("We are running "+System.getProperty("java.version"));
System.out.println("Object header size is "+s1OffSet+" bytes.");
System.out.println("Object reference size is "+(s2OffSet-s1OffSet)+" bytes.");
}
}
Odwołując się do odpowiedzi @NitinS, możesz używać komentarzy zamiast publikować odpowiedzi. –