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

本文深入解析JVM中对象的两种主流访问定位方式:句柄访问和直接指针访问。详细对比了两种方式的实现原理、优缺点,并说明HotSpot虚拟机采用直接指针访问的原因及其性能优势。适合Java开发者深入理解JVM内存模型和对象访问机制。

15–JVM对象的访问定位


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

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

2、使用句柄访问

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

 

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

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

3、使用直接指针访问

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

 

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

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

4、HotSpot的对象访问方式

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