我仍在尝试弄清楚为什么 long
和 double
消耗 12 bytes
而不是内存中的 8 bytes
当然在某处有错误的假设;请指导我..
我用两种方法分析了它,
以下是我的逻辑/假设/来源信息,
12 bytes = [CLASS INFO OF 4 BYTES] + [FLAGS INFO OF 4 BYTES] + [LOCK INFO OF 4 BYTES]
Total Memory - Meta Data
12 bytes => 24 bytes (Total Memory) - 12 bytes (Meta Data)
[ ANSWER ] 4字节的差异是由于JVM的Padding应用。谢谢安迪特纳......
答案 0 :(得分:1)
答案 1 :(得分:0)
你可以检查双倍的大小:
double numDouble=2;
long size=(long)(numDouble*Double.SIZE) / Byte.SIZE;
System.out.println(size);
输出:16