對象構成成分包括什么?
對象的構成組成部分包括對象頭、對象的實例數據區和對齊填充字節這三部分組成。
1. 對象頭
對象頭由三部分組成:
Mark Word:記錄對象和鎖的有關信息。當一個對象被 synchronized 關鍵字加鎖之后,圍繞鎖的操作就都會和MarkWord有關聯。MarkWord通常都是 32 bit位大小。會保存一些分代年齡、無鎖狀態下對象的HashCode、偏向鎖的線程ID、輕量級鎖指向棧中鎖記錄的指針、指向重量級鎖的指針、鎖的標志位等內容。 指向類的指針:大小也通常為32bit,它主要指向類的數據,也就是指向方法區中的位置。
數組長度:只有數組對象才有,在32位或者64位JVM中,長度都是32bit。
2. 實例數據區
該區域主要就存放著實例對象的一些字段屬性內容。
3. 對齊填充字節
由于JVM要求Java對象所占的內存大小應該是8bit的倍數,所以這部分主要就是將對象大小補充為8bit的倍數,沒有別的功能。