java对象这里指的是引用类型的对象,这里用Student stu = new Student()为例子访问,Student stu作为引用对象,存在java的虚拟机栈上,new Student()保存在Java堆中,堆中记录Student类型的信息包括方法,接口,对象类型等地址,这些类型的执行的数据存储在方法区中。

主要的对象的访问方式有句柄访问和直接指针访问:

句柄访问

句柄访问主要是Java堆中划分一块句柄池,虚拟机栈中存放句柄池中的地址,句柄池中包括对象的实例数据和对象类型的数据的地址,基本分布如下图:
访问对象两种方式(句柄访问和直接指针)

直接指针

直接指针访问,就是虚拟机栈直接指向Java堆中的对象类型指针和对象的实例数据,然后对象类型指针在指向方法区中对象类型的实例数据,分布如下图:
访问对象两种方式(句柄访问和直接指针)
HotSpot就是第二种访问方式,优点在于访问速度快,省去一次指针开销时间。

相关文章: