JVM物件的建立 結構 訪問定位

2021-08-21 14:10:29 字數 382 閱讀 7438

初始化物件預設值問題:

臭象資料型別比如date,string預設值是null;

基本資料型別預設值是0;布林型別預設false;

物件的結構包括header(物件頭),instancedate,padding

物件頭包括:

自身執行時資料(雜湊值,gc分代年齡,鎖狀態標誌,執行緒持有的鎖,偏向執行緒id,偏向時間戳)

型別指標:物件指向類的元資料的指標,根據型別指標能找到對應的類

instancedate:真正存放物件的有效資訊

我們主流的商用虛擬機器hotspotvm採用的「直接指標」方式。

物件的訪問定位

建立物件是為了使用物件,j a程式需要通過棧上的reference資料來操作堆上的具體物件。物件的訪問方式,取決於虛擬機器的具體實現。目前主要有控制代碼和直接指標兩種。控制代碼訪問 在j a堆中劃分一塊記憶體作為控制代碼池,reference中儲存的就是物件的控制代碼位址,而控制代碼中包含了物件例項...

JVM學習 物件的例項化 記憶體布局與訪問定位

1 判斷物件對應的類是否載入 鏈結 初始化 虛擬機器遇到一條 new 指令的時候,首先去方法去中查詢這個類是否被載入過。如果沒有,在雙親委派機制模式下,使用當前類載入器 classloader 包名 類名 作為 key 查詢對應的 class 檔案,沒有找到丟擲 classnotfoundexcep...

jvm中物件的組成結構

三部分組成 物件頭 例項資料 對填充 64bit 的jvm規定8byte的整數倍 驗證 使用openjdk提供的jol工具包列印出jvm物件資訊 引入jol包 org.openjdk.jol groupid jol core artifactid put the version here versi...