java對象的訪問方式

java需要通過棧上的reference數據來操作堆上的具體對象,目前主流有兩種方式:
1.使用句柄
  使用句柄的話,java堆將會劃分一塊內存來作爲句柄池,reference中存儲的就是對象的句柄地址,而句柄中包含了對象實例數據與對象類型數據各自的具體地址信息
2.直接指針

  reference中存儲的直接就是對象地址

兩種方式各有優勢,使用句柄訪問最大好處是reference中存儲的穩定的句柄地址,當對象被移動時(垃圾回收機制移動對象非常普遍)只會改變句柄中的實例數據指針,而reference本身不需要修改。

使用直接指針訪問最大好處是速度更快,節省了一次指針定位的時間開銷,由於對象的訪問十分頻繁,因此此類開銷積少成多之後也是一項非常可觀的執行成本,sun HotSpot使用的直接指針方式訪問對象,但從整個軟件開發範圍來看,各種語言和框架使用句柄來訪問也十分常見。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章