JVM

JVM-12丨Java对象访问方式

Posted by jiefang on November 28, 2019

Java对象访问方式

对象访问方式取决于JVM的实现,主流的对象访问方式有以下两种:

  • 使用句柄
  • 使用直接指针

使用句柄方式

Java堆划分一块内存作为句柄池,reference中存储就是对象的句柄地址; 对象句柄包含两个地址:

  • 在堆中分配的对象实例数据的地址;
  • 这个对象类型数据地址;

句柄方式

优点:对象移动时(垃圾回收时常见的动作),reference不需要修改,只改变句柄中实例数据指针;

使用直接指针

reference中存储就是在堆中分配的对象实例数据的地址;

而对象实例数据中需要有这个对象类型数据的相关信息。

直接指针

优点:

  • 对象访问时节省了一次指针定位的时间开销,速度更快;
  • 由于对象访问非常频繁进行,所以能较好提升性能;

HotSpot虚拟机使用了直接指针的方式访问对象。