Java对象的访问方式有两种:句柄直接指针

  • 句柄:java堆中会分出一块区域来作为句柄池。栈中的reference指向堆3中的句柄,句柄中存储的是指向堆中示例数据的地址以及指向方法区中对象实例类型的地址。
    java对象的访问方式
  • 直接指针:reference直接指向堆中对象,Java 堆对象的布局中就必须考虑如何放置访问类型数据的相关信息
    java对象的访问方式

这两种对象访问方式各有优势。使用句柄来访问的最大好处是 reference 中存储的是稳定的句柄地址,在对象被移动时只会改变句柄中的实例数据指针,而 reference 本身不需要修改。使用直接指针访问方式最大的好处就是速度快,它节省了一次指针定位的时间开销。

相关文章: