亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Java對象是指向指針的指針?

為什么Java對象是指向指針的指針?

慕虎7371278 2023-06-28 15:47:39
JVMS說:在 Oracle 的 Java 虛擬機實現中,對類實例的引用是一個指向句柄的指針,該句柄本身就是一對指針:一個指向包含對象方法的表,另一個指向代表該對象的 Class 對象對象的類型,另一個是從堆中為對象數據分配的內存。我不明白為什么引用會以這種方式實現,而不是使它們成為指向方法表指針的指針,后跟對象的數據。這將避免創建對象時的額外內存分配和字段訪問時的額外指針取消引用。Oracle 這樣做的原因是什么?
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

這種策略將允許在內存中移動對象,而無需調整所有現有引用,因為只需要調整一個直接指針。移動內存中的對象將通過復制或壓縮垃圾收集器來完成。

然而,對于所有最近的 JVM 實現,這種間接的成本被認為不值得節省,因此“一些 Oracle 的實現”實際上意味著“Oracle 在購買 Sun 時獲得的 Sun 的一些非常舊的 JVM”。如今,現實世界中的 JVM 在移動內存中的對象時確實會調整所有引用。

換句話說,對于仍在使用的 JVM,這是一個相當過時的聲明,但作為替代實現策略的示例保留在規范中。


查看完整回答
反對 回復 2023-06-28
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號