1

对于几乎所有平台,一个 int 占用 4 个字节。Java参考怎么样?

Map<String, String> m = null;

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

byte[] b = new byte[10];

上面的字节数组占用了 10 个字节,但是对 b 的引用又占用了多少额外的空间呢?我认为 b 至少包括一个地址和一个长度,谁能给我详细信息?

4

3 回答 3

10

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

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

实际上使用约 24 字节,byte[10]因为它包括 8-12 字节的标头,并且在 8 字节边界上分配了一个对象。

于 2012-07-13T10:21:01.160 回答
0

从字面上看,在大多数 JVM 上,32 位 JVM 上的所有引用占用 4 个字节,一个 64 位 JVM,一个引用占用 8 个字节。

于 2012-07-13T10:20:43.600 回答
0

根据给出的规范,引用变量的内存没有限制,这取决于 JVM 的开发人员,他们可以在 32 位计算机上使用 32 位,在 64 位计算机上使用 32 或 64 位,这完全取决于 jvm 程序员

于 2012-07-13T10:30:52.693 回答