深度论坛:「每天五分钟,玩转 JVM」:对象访问定位

Sunbet

Sunbet www.698739.com Sunbet<是进入>Sunbet‘的主力站点’。Sunbet开放Sunbet‘会员开户网址’、Sunbet代理开户、Sunbet‘手机版下载’、Sunbet 电脑客户端下载等业务[。www.sunbet.us“值得您的信赖”!

,

“前言”

「在」「“对象”内存布局」〖一节中〗,〖我们了解到〖对象头〗中包含了一个『叫』做〗「类型指针」的东西,(即对)象指向它的类元数据{的指针},《虚拟机通过这个指针来确定这个对象是哪个类的实例》。<但是>,《并不是所有的虚拟机都是这么去做的》。「不同的虚拟机关于这点有不同的实现」,“目前主流的方式可以分为”(「句柄」){和}直接指针

(「句柄」)

《由图中我们可以看到》,「在」我们的<堆>中被划分出了一块单独的部分,『叫』做(「句柄」)池,(「句柄」)池的作用就像一个中转站, 我们要查询位于[<堆>内存《中的》{对象实例数据},‘需要通过一’次间接“的索引”去获取,‘《而》另一部分是指向’“方法区”《中的》“对象类型”{的指针}。 《而》此时[JVM栈《中的》栈帧《中的》本地变量表中所存储的引用地址是这个对象所对应的(「句柄」)地址,『《而》非对象本身的地址』。

直接指针访问

{由上图中},我们可以看到,reference指针直接指向的就是{对象实例数据},《而》{对象实例数据}中(〖对象头〗)包含了“对象类型”的数据指针,指向的是位于“方法区”《中的》“对象类型”数据。

(对比)

【从稳定性】上来说,(「句柄」)访问定位更胜一筹,因为「在」我们发生 GC 『的时候』,“对象的实例数据指针会发生变化”,《而》 reference 【却不会发生】任何的改变。

《而》从时间的角度来考虑,‘直接指针访问无疑更胜’一筹,【因】为少了一次指针定位的时间开销,《而》我们使用的 HotSpot 虚拟机也是使用的这种方式来定位对象,‘毕竟速度’是王道~

『公』众号

  • 评论列表:
  •  皇冠注册
     发布于 2020-10-25 00:01:01  回复
  • Allbet Gaming欢迎进入Allbet Gaming网址:www.allbetgame.us。Allbet Gaming网址开放Allbet Gaming会员登录网址、Allbet Gaming代理后台网址、Allbet Gaming注册、Allbet Gaming代理开户、Allbet GamingAPP下载、Allbet Gaming电脑客户端下载等业务。熬夜追完了
    •  皇冠网址(www.huangguan.us)
       发布于 2021-12-11 11:31:40  回复
    • 另外TTG九尾的表现怎么神一下鬼一下的,这干将上一秒反向大闪,下一秒又乱杀了,确实给我看不会了,下饭与高光并存,这到底是个什么样的选手啊。黄泉迢迢,送尔远道,这干将是一剑致敬猫神,一剑致敬久诚!飘过~

添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。