1. 程式人生 > >Java物件建立的過程?

Java物件建立的過程?

Java建立物件的過程?

  • 判斷是否被載入到記憶體
    • Jvm遇到一條new指令時,會檢查這個指令的引數是否能在常量池中定位到一個類的符號引用,檢查其是否被載入,解析和初始化,如果沒意義,把類載入到記憶體
  • 為物件分配記憶體空間
    • 分配記憶體有兩種方式,​即​​​​​​碰撞指標和空閒列表,如果堆記憶體是規整的使用碰撞指標,如果不規整使用空閒列表,堆記憶體的規整取決於Java垃圾回收機制是否有壓縮整理的功能
  • 初始化零值
    • Jvm會對物件的變數初始化零值,以保證它們沒有賦初值仍然可以用
  • 設定物件頭
    • 把物件的元資料資訊,雜湊碼,GC分代資訊存到物件頭上
  • 執行init方法
    • 此時從Jvm的角度已經完成,但從Java程式的角度,才剛開始執行init方法,把物件按照程式設計師的意願初始化,完成物件的建立