微信公众号:路人zhang
网站救助计划

1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本


2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助网站倒闭后可联系站长领取本站pdf内容


3.若网站能存活下来,后续将会持续更新内容

当前位置: Java > JVM高频面试题 > 7.对象的访问方式有哪些

建立对象就是为了使用对象,我们的 Java 程序通过栈上的 reference 数据来操作堆上的具体对象。目前主流的访问方式有使用句柄直接指针两种。

句柄

Java堆中会划分出一块内存来作为句柄,reference中存储的是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息,如下图(图片来源于《深入理解Java虚拟机》)

句柄访问对象
句柄访问对象

使用句柄访问对象的优势:reference中存储的是稳定的句柄地址,在对象移动时(垃圾回收时会经常移动对象)只会改变句柄中的实例数据指针,无需改变reference

直接指针

如果使用直接指针访问,reference中存储的就是对象地址,而Java堆对象的布局需要考虑如何放置访问累类型数据的相关信息,如下图(图片来源于《深入理解Java虚拟机》)

直接指针访问对象
直接指针访问对象

使用直接指针访问对象的优势是省了一次指针定位的时间开销,速度更快

本站链接:https://www.mianshi.online如需勘误或投稿,请联系微信:lurenzhang888


点击面试手册,获取本站面试手册PDF完整版