java引用需要多少堆空间?

1 java memory jvm

几乎所有平台的int都需要4个字节.Java参考怎么样?

Map<String, String> m = null;
Run Code Online (Sandbox Code Playgroud)

变量m占用32位/ 64位JVM的空间多少?

byte[] b = new byte[10];
Run Code Online (Sandbox Code Playgroud)

上面的字节数组占用10个字节,但是对b的引用需要多少额外空间?我认为b至少包括一个地址和一个长度,任何人都可以给我详细信息?

Pet*_*rey 10

对象中的引用在大多数JVM上使用4个字节(无论是32位还是64位),因为最近的64位JVM使用压缩的Oops来处理高达32 GB的堆.在某些64位JVM上,它需要8个字节.

但是,堆栈上的大小通常不计算在内,只有堆大小很重要,在这种情况下,堆上没有大小.

byte[10]实际使用〜24个字节,因为它包括8-12个字节的报头和一个对象被一个8字节边界上分配的.