概述

一個(gè)對(duì)象本身的內(nèi)在結(jié)構(gòu)需要一種描述方式,這個(gè)描述信息是以字節(jié)碼的方法存儲(chǔ)在方法區(qū)中的。
Class 本身就是一個(gè)對(duì)象,都以 KB 為單位,如果 new Integer() 為了表示一個(gè)數(shù)據(jù)就占用KB級(jí)別的內(nèi)存就有點(diǎn)不值了,下面講解 JVM 是如何做的。
為了表示對(duì)象的屬性、方法等信息,不得不需要結(jié)構(gòu)描述。Hotspot VM 使用對(duì)象頭部的一個(gè)指針指向 Class 區(qū)域的方式來找到對(duì)象的 Class 描述,以及內(nèi)部的方法、屬性入口。如下圖所示:

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

在 HotSpot 虛擬機(jī)中,對(duì)象在內(nèi)存中存儲(chǔ)布局分為 2 塊區(qū)域:對(duì)象頭(Header)、實(shí)例數(shù)據(jù)(Instance Data)、對(duì)齊填充(Padding),下面詳細(xì)講解各部分內(nèi)容。

對(duì)象頭(Header)

網(wǎng)友評(píng)論