看到書里有這么一段話:一個Integer對象會使用24字節(jié),其中分別是:16字節(jié)的對象開銷4字節(jié)用于保存它的int值4個填充字節(jié)我想請教的是:什么對象開銷?16字節(jié)里面究竟存儲著什么?填充字節(jié)又是什么?它里面存儲著什么?
3 回答

忽然笑
TA貢獻1806條經(jīng)驗 獲得超5個贊
16個字節(jié)是是
Object Header
,包括了Mark word
,Class
類型信息...(16個字節(jié)是64位系統(tǒng)上,并且沒有開啟指針壓縮的大小)HotSpot的對齊方式是以8字節(jié)對齊,所有沒有對象最終大小沒有到8個字節(jié)的倍數(shù)的,都會被填充

四季花海
TA貢獻1811條經(jīng)驗 獲得超5個贊

明月笑刀無情
TA貢獻1828條經(jīng)驗 獲得超4個贊
下面只是不負責(zé)任的猜測:
Integer繼承自O(shè)bject,構(gòu)造Integer的時候要先構(gòu)造Object,對象開銷就是這時候構(gòu)造Object的開銷,其中8個字節(jié)是空對象,4個字節(jié)是對象引用,但是Java里字節(jié)分配以8為單位,所以這里要用16字節(jié),其中沒用的字節(jié)叫填充字節(jié)。
下面填充字節(jié)一樣。
添加回答
舉報
0/150
提交
取消