JVM9-怎么访问对象

 

 

 

 

你是怎么访问你的对象的
简介:Java程序员不不可不不知的对象访问定位⽅方式
-当我们在堆上创建⼀一个对象实例例后,就要通过虚拟机栈中的reference类型数据来操作堆上的对象。现在主流的访问方式有两种(HotSpot虚拟机采用的是第二种):
  1. 使用句句柄访问对象。即reference中存储的是对象句句柄的地址,而句句柄中包含了了对象实例例数据
  与类型数据的具体地址信息,相当于二级指针。
  2. 直接指针访问对象。即reference中存储的就是对象地址,相当于一级指针。
-对比
  垃圾回收分析:1方式当垃圾回收移动对象时,reference中存储的地址是稳定的地址,不不需要修改,仅需要修改对象句句柄的地址;即垃圾回收时只需要更新句柄池即可(效率比2要高);2方式垃圾回收时需要修改reference中存储的地址。要判断实例内存还存不存在、是否被回收掉……内存不连续 故效率要低很多;
  访问效率分析,方式二优于方式一,因为方式二只进行行了了一次指针定位,节省了了时间开销,而这也是HotSpot采用的实现方式

 

 

posted @ 2019-06-28 11:48  valar-dohaeris  阅读(90)  评论(0)    收藏  举报