美文网首页
Java中对象的访问定位

Java中对象的访问定位

作者: ACtong | 来源:发表于2020-05-10 16:59 被阅读0次

我们前面有说过一个对象是如何创建的,那么创建之后具体怎么使用呢?

  • Java程序会通过栈上的reference数据来操作堆上的具体对象
    reference类型里面只规定了它是一个指向对象的引用,并没有定义引用应该通过什么方式去定位、访问到堆中对象的具体位置,随意对象访问方式也是由虚拟机来规定/
reference类型主流的访问方式
  1. 使用句柄访问
  • Java堆中就会分配一块内存作为句柄池,reference中就是存放的句柄池地址
  • 句柄池包括了:到对象实例的数据指针、到对象类型数据的指针的地址信息


    通过句柄访问对象
  1. 使用指针访问
  • Java堆中对象的内存布局需要考虑放置访问类型数据的信息
  • reference中存储的直接是对象地址
  • 访问对象本身,就可以直接访问,减少间接访问开销。


    通过直接指针访问对象
总结:
句柄池访问

优点:稳定(由于存储的是句柄地址,在对象被移动时,只会改变句柄中实例数据指针,而reference本身不需要修改)

直接指针访问:

优点:速度快,(由于对象访问在Java中非常频繁,减少类似开销是及为可观的成本。HotSpot虚拟机使用的就是这种)

相关文章

网友评论

      本文标题:Java中对象的访问定位

      本文链接:https://www.haomeiwen.com/subject/ufwjnhtx.html