hotspot虚拟机中对象是如何访问的

来源:互联网 发布:淘宝网新款秋装 编辑:程序博客网 时间:2024/05/22 02:09

对象是如何访问的?

 

通过栈上的对象引用来访问对象。

 

引用是如何来访问java堆中的对象的呢??

主要看具体的虚拟机怎么实现,主流的有两种:

1.句柄访问:java堆中国划分一部分内存存储句柄的句柄池,引用类型存的是指向该句柄池的地址,然后造句柄池中对应保存着实例对象的地址

 

优点:在实例对象发生移动时候(垃圾回收器回收对象,实例对象移动很正常)

  就可以只改变句柄池中对应具体的实例对象的的地址即可,而不用改变栈中的引用数据的值

 

2.直接指针:引用数据直接保存着实例对象的地址(HotSpot所使用的)

 

优点:速度快,对象的访问很频繁,直接定位减少了一次指针定位的开销(定位句柄),从而积少成多,在提升访问性能上做出的效果也是极其可以的

0 0