如何实现对java对象的引用?

Pas*_*mer 3 java implementation reference object

指针是否仅用于实现java引用变量或它是如何实现的?以下是Java语言规范中的行

4.3.1对象对象是类实例或数组.引用值(通常只是引用)是指向这些对象的指针,以及一个特殊的空引用,它指的是没有对象.

这是否意味着它一直是指针?

Tom*_*ine 7

在现代JVM中,引用实现为地址.

回到HotSpot的第一个版本(以及"经典VM"的早期版本),引用被实现为句柄.这是指向指针的固定指针.第一个指针永远不会因任何特定对象而改变,但随着对象数据本身的移动,第二个指针会发生变化.显然这会影响使用中的性能,但更容易编写GC.

在JDK7的最新版本中,支持"压缩oops".我相信BEA JRockit已经有一段时间了.迁移到64位系统需要两倍的内存,因此需要地址带宽."压缩的oops"利用最不重要的三位或四位地址始终为零.32位数据左移三位或四位,允许32或64 GB的堆而不是4 GB.