15、JVM实战:JVM对象的访问定位

15–JVM对象的访问定位


1、主流的访问方式有两种

1、 使用句柄访问;
2、 使用直接指针访问;

2、使用句柄访问

1、 Java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址;
2、 句柄中包含了对象实例数据与类型数据的具体各自的地址信息;

*

2.1、句柄来访问的最大好处

就是reference中存储的是稳定句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而reference本身不需要被修改。

3、使用直接指针访问

Java堆对象的布局中就必须考虑如何放置访问类型数据的相关信息,reference中存储的直接就是对象地址。

*

3.1、直接指针来访问的最大好处

就是速度更快,它节省了一次指针定位的时间开销,由于对象访问的在Java中非常频繁,因此这类开销积小成多也是一项非常可观的执行成本。

4、HotSpot的对象访问方式

虚拟机HotSpot 是 使用直接指针 进行对象访问