首頁  >  問答  >  主體

java - 整数的封装对象中的对象开销和填充字节是什么东东

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

我想请教的是:

PHP中文网PHP中文网2741 天前406

全部回覆(3)我來回復

  • ringa_lee

    ringa_lee2017-04-18 09:57:50

    1. 16個位元組是是Object Header,包括了Mark word,Class類型資訊...(16個位元組是64位元系統上,並且沒有開啟指標壓縮的大小)

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:57:50

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:57:50

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

    回覆
    0
  • 取消回覆