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

21 浏览
0 Comments

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

Java中的引用变量有多大?我很确定它不会依赖于体系结构,是吗?它与C语言中指针的概念有任何相似之处吗?我尝试过,但没有得到令人信服的答案。

0
0 Comments

在Java中,引用变量的大小取决于几个参数:

  • 在32位JVM上,引用变量的大小为32位。
  • 在64位JVM上,引用变量的大小可以是32位或64位,这取决于配置。例如,在Hotspot中,默认情况下启用了压缩普通对象指针,引用变量的大小为32位。如果使用-XX:-UseCompressedOops选项禁用该选项,则引用变量将使用64位。

即使没有使用CompressedOops,也可以获得32位的引用变量大小,例如这个

根据上述信息,我们可以得出Java中引用变量大小的原因和解决方法。引用变量的大小取决于JVM的位数和配置。在32位JVM上,引用变量的大小始终为32位。而在64位JVM上,默认情况下启用了压缩普通对象指针,引用变量的大小为32位。如果需要使用64位引用变量,可以通过使用-XX:-UseCompressedOops选项禁用压缩普通对象指针。

此外,根据一些讨论,即使没有使用压缩普通对象指针,也可以获得32位的引用变量大小。

总结起来,要确定Java中引用变量的大小,需要考虑JVM的位数和配置。可以通过启用或禁用压缩普通对象指针来调整引用变量的大小。

0