JVM內(nèi)的對象創(chuàng)建過程&對象頭&對象的組成詳解

對象創(chuàng)建過程

當new一個對象的時候笑窜,首先會檢查這個對象是否已經(jīng)被類加載器加載,沒有加載則按照當前的類加載器去加載(全盤委托機制)有加載或加載完畢后為其分配內(nèi)存空間登疗。

分配內(nèi)存空間

在類加載檢查通過后排截,接下來虛擬機將為新生對象分配內(nèi)存嫌蚤。
劃分內(nèi)存的方法:

  • 指針碰撞 :(默認使用指針碰撞)
    如果java堆中的內(nèi)存是規(guī)范的,那么一邊是使用過的內(nèi)存一邊是空的內(nèi)存断傲,那么會在中間加一個指針作為分界點的指示器脱吱,分配的內(nèi)存就是把指針向空閑的位置 挪一段與對象大小相同的位置即可
  • 空閑列表
    如果Java堆中的內(nèi)存并不是規(guī)整的,就必須維護一個列表认罩,記錄上哪些內(nèi)存塊是可用的箱蝠,在分配的時候從列表中找到一塊足夠大的空間劃分給對象實例, 并更新列表上的記錄

初始化

內(nèi)存分配完成后垦垂,虛擬機需要將分配到的內(nèi)存空間都初始化為零值(不包括對象頭)這一步叫初始化

設置對象頭

然后就要設置對象頭虛擬機要對對象進行必要的設置宦搬,例如這個對象是哪個類的實例、如何才能找到類的元數(shù)據(jù)信息劫拗、對象的哈希碼间校、對象的GC分代年齡等信息。這些信息存放在對象的對象頭Object Header之中页慷。

執(zhí)行<"init"> 方法

就是為屬性賦值憔足,賦上程序員賦的那個值,并不是初始化中的零賦值

對象的組成部分

對象是由三部分組成:對象頭(Header)酒繁、 實例數(shù)據(jù)(Instance Data)和對齊填充(Padding)滓彰。

對象頭

對象頭內(nèi)分為三部分

1.Mark Word

Mark Word在32位JVM中的長度是4個字節(jié),在64位JVM中長度是8個字節(jié)
用于存儲對象自身的運行時數(shù)據(jù)州袒, 如哈 希碼(HashCode)揭绑、GC分代年齡、鎖狀態(tài)標志稳析、線程持有的鎖洗做、偏向線程ID、偏向時 間戳等


32位的mark word圖

2.Klass Pointer類型指針(開啟壓縮占4個字節(jié)彰居,未開啟占8個字節(jié))

對象指向它的類元數(shù)據(jù)的指針诚纸,虛擬機通過這個指針來確定這個對象是哪個類的實例。

3.數(shù)組長度

4個字節(jié)陈惰,只有數(shù)組對象有

示例數(shù)據(jù)

對象的實例數(shù)據(jù)就是在代碼中能看到的屬性和他們的值畦徘。

對齊填充

因為JVM要求java的對象占的內(nèi)存大小應該是8個字節(jié)的倍數(shù),所以后面有幾個字節(jié)用于把對象的大小補齊至8個字節(jié)的倍數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抬闯,一起剝皮案震驚了整個濱河市井辆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溶握,老刑警劉巖杯缺,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異睡榆,居然都是意外死亡萍肆,警方通過查閱死者的電腦和手機袍榆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來塘揣,“玉大人包雀,你說我怎么就攤上這事∏渍。” “怎么了才写?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奖蔓。 經(jīng)常有香客問我赞草,道長,這世上最難降的妖魔是什么锭硼? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任房资,我火速辦了婚禮,結(jié)果婚禮上檀头,老公的妹妹穿的比我還像新娘轰异。我一直安慰自己,他們只是感情好暑始,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布搭独。 她就那樣靜靜地躺著,像睡著了一般廊镜。 火紅的嫁衣襯著肌膚如雪牙肝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天嗤朴,我揣著相機與錄音配椭,去河邊找鬼。 笑死雹姊,一個胖子當著我的面吹牛股缸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吱雏,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼敦姻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了歧杏?” 一聲冷哼從身側(cè)響起镰惦,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎犬绒,沒想到半個月后旺入,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡凯力,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年眨业,在試婚紗的時候發(fā)現(xiàn)自己被綠了急膀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡龄捡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慷暂,到底是詐尸還是另有隱情聘殖,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布行瑞,位于F島的核電站奸腺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏血久。R本人自食惡果不足惜突照,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氧吐。 院中可真熱鬧讹蘑,春花似錦、人聲如沸筑舅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翠拣。三九已至版仔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間误墓,已是汗流浹背蛮粮。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谜慌,地道東北人然想。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像畦娄,于是被迫代替她去往敵國和親又沾。 傳聞我的和親對象是個殘疾皇子穗酥,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容