看到书里有这么一段话:
一个Integer对象会使用24字节,其中分别是:
16字节的对象开销
4字节用于保存它的int值
4个填充字节
我想请教的是:
什么对象开销?16字节里面究竟存储着什么?
填充字节又是什么?它里面存储着什么?
ringa_lee2017-04-18 09:57:50
16個位元組是是Object Header
,包括了Mark word
,Class
類型資訊...(16個位元組是64位元系統上,並且沒有開啟指標壓縮的大小)
HotSpot的對齊方式是以8位元組對齊,所有沒有物件最終大小沒有到8個位元組的倍數的,都會被填滿
大家讲道理2017-04-18 09:57:50
下面只是不負責任的猜測:
Integer繼承自Object,建構Integer的時候要先建構Object,物件開銷就是這時候建構Object的開銷,其中8個位元組是空對象,4個位元組是物件引用,但是Java裡位元組分配以8為單位,所以這裡要用16字節,其中沒用的位元組叫填滿位元組。
下面填充位元組一樣。