几乎所有平台的int都需要4个字节。 Java参考怎么样?
Map<String, String> m = null;
变量m占用32位/ 64位JVM的空间大小?
byte[] b = new byte[10];
上面的字节数组占用10个字节,但是对b的引用需要多少额外空间? 我认为b至少包括一个地址和一个长度,任何人都可以给我详细信息吗?
答案 0 :(得分:10)
对象中的引用在大多数JVM上使用4个字节(无论是32位还是64位),因为最近的64位JVM在最多32 GB的堆上使用Compressed Oops在某些64位JVM上需要8个字节。
但是,堆栈的大小通常不计算在内,只有堆大小很重要,在这种情况下,堆上没有大小。
byte[10]
实际上使用~24个字节,因为它包含8-12个字节的标头,并且在8字节边界上分配了一个对象。
答案 1 :(得分:0)
从字面上看,在大多数JVM上,32位JVM上的所有引用都需要4个字节,一个64位JVM,引用需要8个字节。
答案 2 :(得分:0)
根据给出的规范,对于引用变量的内存没有约束,它取决于JVM的开发人员,他们可能在32位计算机上使用32位,在64位计算机上使用32位或64位这一切都取决于jvm程序员