對象的內存佈局

在HotSpot虛擬機中,對象在內存中存儲的佈局可分爲三個部分:佈局

  •  對象頭、實例數據和對齊填充

對象頭包括兩個部分:線程

  • 第一部分用於存儲對象自身的運行時數據,
    • 如哈希碼、GC分代年齡、線程所持有的鎖等。
    • 官方稱之爲「Mark Word」。
  • 第二個部分爲是類型指針,
    • 即對象指向它的類元數據的指針,
    • 虛擬機經過這個指針來肯定這個對象是哪一個類的實例。

實例數據是對象真正存儲的有效信息,指針

  • 也是程序代碼中所定義的各類類型的字段內容。

對齊填充並非必然存在的,僅僅起着佔位符的做用。對象

  • Hotpot VM要求對象起始地址必須是8字節的整數倍,
    • 對象頭部分正好是8字節的倍數,
  • 因此當實例數據部分沒有對齊時,須要經過對齊填充來對齊。

相關文章
相關標籤/搜索