Java 物件建立的流程

居合子發表於2017-03-15
  1. Object obj = new Object();

  2. 虛擬機器遇到 new 指令

  3. 檢查指令的引數是否能在常量池中定位到一個類的符號引用

  4. 檢查符號引用是否已經被載入、解析和初始化。如果沒有則進行類載入。

  5. 虛擬機器為新生物件分配記憶體(物件所需的記憶體大小在類載入完就可確定)

  6. 將分配到的記憶體空間都初始化為零值(不包括物件頭)這一步操作保證了物件的例項欄位在 Java 程式碼中可以不賦初始值就直接使用,程式能訪問到這些欄位的資料型別所對應的零值

  7. 虛擬機器對物件進行必要的設定,例如這個物件是哪個類的例項、如何才能知道類的後設資料資訊、物件的雜湊碼、物件的 GC 分代年齡資訊等等,這些資訊都存放在物件的物件頭(Object Header)之中。

    從虛擬機器的視角來看,一個新的物件已經產生了,從 Java 程式角度來看,物件建立才剛剛開始

  8. 執行 new 指令之後會接著執行 方法,把物件按照程式設計師的意願進行初始化

  9. 一個真正可用的物件才算完全產生出來。

想要了解更多的話,請移步本人的學習筆記,如果覺得有幫助的話,請點一個star✨。

相關文章