1. 程式人生 > >jvm 物件在記憶體中儲存的佈局

jvm 物件在記憶體中儲存的佈局

jvm  物件在記憶體中儲存的佈局有三部分:物件頭、例項資料、對齊填充。

1、物件頭:執行時資料、型別指標、陣列長度。

(1)執行時資料:hashcode雜湊碼、鎖狀態標誌、執行緒持有的鎖、GC年齡分代等,有些不是固定不變的,在執行時會根據當時的狀態進行修改。

(2)型別指標:指向方法區中型別資訊的指標。型別資訊就是編譯後的程式碼以及其他關於這個類的資料資訊。

(3)陣列長度:如果物件是陣列,物件頭中還會存有陣列長度。如果不是陣列則沒有該資料。

2、例項資料:就是物件中各例項欄位的資料,物件的例項欄位儲存的要麼是基本型別,要麼就是其他物件的引用。

3、對齊填充:jvm要求物件的記憶體佔用大小必須是8位元組的整數倍,而物件頭與例項資料相加有些時候不一定是8位元組的整數倍,所以,對齊填充就是再填充一些特定標誌資料使得    物件頭+例項資料+填充資料   為8位元組的整數倍。