java - 整数的封装对象中的对象开销和填充字节是什么东东
PHP中文网
PHP中文网 2017-04-18 09:55:50
0
3
426

看到书里有这么一段话:
一个Integer对象会使用24字节,其中分别是:

  • 16字节的对象开销

  • 4字节用于保存它的int值

  • 4个填充字节

我想请教的是:

  • 什么对象开销?16字节里面究竟存储着什么?

  • 填充字节又是什么?它里面存储着什么?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(3)
左手右手慢动作
  1. 16個位元組是是Object Header,包括了Mark word,Class類型資訊...(16個位元組是64位元系統上,並且沒有開啟指標壓縮的大小)

  2. HotSpot的對齊方式是以8位元組對齊,所有沒有物件最終大小沒有到8個位元組的倍數的,都會被填滿

Ty80

物件開銷中放著物件的基本資訊;填充位元組用來填滿位元組數的啊,物件佔用的位元組必須是8位元組的倍數。

大家讲道理

下面只是不負責任的猜測:
Integer繼承自Object,建構Integer的時候要先建構Object,物件開銷就是這時候建構Object的開銷,其中8個位元組是空對象,4個位元組是物件引用,但是Java裡位元組分配以8為單位,所以這裡要用16字節,其中沒用的位元組叫填滿位元組。
下面填充位元組一樣。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板