Tôi muốn biết nếu có một số cách để máy ảo 64 bit sử dụng tiêu đề đối tượng 8byte thay vì tiêu đề đối tượng 12byte nếu RAM có thể sử dụng cho JVM là 4GB.Kích thước tiêu đề đối tượng trong Java trên máy ảo 64bit với <4GB RAM
Hoặc có giống như trên Linux, nếu không phải trên cửa sổ? Ai đó có thể kiểm tra điều này với mã này?
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.");
}
}
Khi bạn tham khảo câu trả lời @NitinS, bạn có thể sử dụng các nhận xét thay vì đăng câu trả lời. –