深入理解JVM(③)——之HotSpot虚拟机对象探秘 (2)

对象创建完成后就可以使用了,对象的定位是根据栈中的引用数据,来确定对象在内存中的位置的。那么如何通过引用数据定位到堆中的对象位置呢?
主流的访问方式主要有使用句柄和直接指针两种:

如果使用句柄访问的话,Java堆中将可能会划分出一块内存来作为句柄池,引用数据中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自具体的地址信息。

如果使用直接指针访问的话,Java堆中对象的内存布局就必须考虑如何放置访问类型数据的相关信息,引用数据中存储的直接就是对象地址,这样访问对象更快捷。

使用句柄,在对象被移动(垃圾收集时)时只会改变句柄中的数据指针,而直接指针节省了一次指针定位的时间开销速度更快!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfjpj.html