对象的访问定位:句柄与直接指针

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/FIRE_TRAY/article/details/51275788

对象的访问定位:句柄与直接指针

Java程序通过栈中的reference数据来操作堆上的具体对象,而对象的访问方式取决于虚拟机的实现。主流访问方式有句柄和直接指针两种

句柄方式

Java堆中将会划出一块内存来作为句柄池,reference对象存储的就是对象的句柄地址。句柄中包含了对象实例数据和类型数据的具体地址:

直接指针方式

reference对象直接存储对象地址:

两者对比

句柄

由于reference中存储的是稳定的句柄地址,在对象被移动时(如GC过程中的对象移动),只需改变句柄中实例数据指针,而reference本身不用动。

直接指针

速度快,节省了一次指针定位的时间开销。HotSpot采用此方式

没有更多推荐了,返回首页