Jvm虛擬機器(二)-HotSpot虛擬機器物件探祕-圖文總結
阿新 • • 發佈:2020-10-11
第二章主要簡單介紹下物件建立和記憶體佈局,介紹了下虛擬機器中記憶體物件的記憶體使用方式。
物件的建立
虛擬機器中物件的建立
類載入
類載入可以說是在Java堆中進行的。其中分配方式的選擇又是根據其堆記憶體空間的是否規整來決定的。
“指標碰撞”(Bump The Pointer)
通過撥動指標來劃分記憶體
“空閒列表”(Free List)
空閒列表記錄未分配的記憶體空間
物件的記憶體佈局
物件在堆記憶體中的儲存佈局
側重點就是
物件頭儲存著物件自身的執行時資料,包含一些 雜湊碼(HashCode)和GC分代年齡,鎖狀態標誌等。
一個物件的記憶體佈局包含: 物件頭、例項資料、對齊填充的資料。
物件頭:儲存物件自身的執行時資料,包含一些 雜湊碼(HashCode)和GC分代年齡,鎖狀態標誌等,位於Mark Word資料結構中,這是一塊極小的記憶體。 型別指標中指向它的型別元資料的指標,Java虛擬機器通過這個指標 來確定該物件是哪個類的例項指標。
例項資料:物件的有效資訊,我們程式碼中定義的各種型別的欄位內容。
對齊填充:使得物件的起始地址必須是8位元組的整數倍。虛擬機器要求。
物件的訪問定位
物件的引用
通過Java棧本地變量表,棧上的reference資料來操作堆上具體的物件
側重點:
物件的引用 reference型別 不等同於物件的本身
兩種訪問方式 : 控制代碼池、直接指標
通過控制代碼池訪問物件
通過直接指標訪問物件
HotSpot虛擬機器
目前總結到的 hotspot虛擬機器所持有的一些特性
總結
該章主要介紹了物件在虛擬機器中的記憶體是如何劃分的,以及物件的儲存和引用的一些介紹,以圖文和思維導圖的形式整理出來,希望能更清晰的展示出來。
目前第二章和後續第三章總體 xmind檔案
連結: https://pan.baidu.com/s/1v-mcCz-0mxNtHvNxq80nYg 密碼: 5gje