1. 程式人生 > >java物件訪問模式

java物件訪問模式

1.  java物件訪問模式

為什麼我們要引入java物件訪問模式,我們知道Object obj = new Object();但是裡面的具體細節,我們還不是特別瞭解。

     分析:Object obj 其實就是宣告一個物件。保持在棧記憶體之中,也儲存了堆記憶體的引用

                new Object() 其實是例項化物件,該物件儲存在堆記憶體之中。

但是我們應該知道obj如何得到例項化物件的地址?

引用資料型別分為兩種模式

控制代碼訪問:

JAVA堆中將會劃分出來一塊記憶體作為控制代碼池,reference中就是儲存了物件的控制代碼地址,而控制代碼中包含了物件例項資料和型別資料各自的具體地址資訊。

    使用控制代碼訪問的最大好處是reference中儲存的是穩定的控制代碼地址,在物件被移動時,只會改變控制代碼中的例項資料指標,而reference本身不需要被修改。

 


直接指標訪問:

 相比較控制代碼的訪問方式,JAVA堆中不會單獨劃分記憶體,reference中直接儲存了物件地址,而物件中包含了物件型別資料的地址資訊。

    使用直接指標的最大好處就是速度更快,節省了一次指標定位需要的時間開銷,由於JAVA物件訪問十分頻繁,這類開銷積小成多後也是一項非常可觀的執行成本。Sun HotSpot虛擬機器使用的就是這種訪問方式。

  • 該模式沒有控制代碼池的概念
  • 在JVM中是直接利用物件儲存模式,即直接儲存具體的物件
  • 該策略省略了控制代碼到物件間的查詢,而後該物件直接進行java方法區的呼叫

為什麼java使用直接指標訪問?(正在研究)