Java中引用变量的大小是多少?

10
在Java中,引用变量的大小是多少?我相当确定它不会依赖于架构,是这样吗?它是否与C语言中指针的概念相似?我已经尝试过了,但没有得到令人信服的答案。

2
请看这里:https://dev59.com/SVXTa4cB1Zd3GeqP0ljT - John Snow
如何找到包括所包含对象在内的对象大小 - William Morrison
1
大小将取决于虚拟机的架构。 - William Morrison
2
这有什么关系呢?你怎么知道引用是32位、64位还是128位的?这会对程序的执行产生什么区别(除了需要更多的堆内存)? - Hot Licks
1个回答

13

引用使用的内存量取决于几个参数:

  • 在32位JVM上,它将使用32位
  • 在64位JVM上,它可以是32位或64位,具体取决于配置。例如,在Hotspot上,默认情况下启用压缩普通对象指针(CompressedOops),引用的大小为32位。如果您使用-XX:-UseCompressedOops选项取消该选项,则它们将使用64位。

1
你甚至可以在没有使用CompressedOops的情况下获得32位的引用大小,例如这个 - Eugene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接