Java教程

Java对象的访问定位

本文主要是介绍Java对象的访问定位,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java程序通过栈上的reference数据来操作堆上的具体对象。reference类型在是一个指向对象的引用,它通过什么方式去定位、访问到堆中对象的具体位置,是由虚拟机实现而定的,主流的访问方式主要有使用句柄和直接指针两种

使用句柄

在Java堆中划分一块内存作为句柄池,reference中存储的是对象的句柄地址,句柄中包含了队形的实例数据与类型数据各自的地址信息。如下图所示:

通过句柄访问对象

使用句柄的优点是reference存储的是稳定句柄地址,在对象被移动(例如垃圾收集)时只会改变句柄的示例数据指针,reference本身不需要修改。

直接指针

reference中存储的直接就是对象地址,Java对象中存在到对象类型数据的指针(对象头中)。如下所示:

通过直接指针访问对象

使用直接指针的优点是速度更快,它节省了一次指针定位的时间开销。

HotSpot虚拟机主要使用第二种方式进行对象访问。

这篇关于Java对象的访问定位的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!