Java 對象建立的流程

  1. Object obj = new Object();git

  2. 虛擬機遇到 new 指令程序員

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

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

  5. 虛擬機爲新生對象分配內存(對象所需的內存大小在類加載完就可肯定)ui

  6. 將分配到的內存空間都初始化爲零值(不包括對象頭)這一步操做保證了對象的實例字段在 Java 代碼中能夠不賦初始值就直接使用,程序能訪問到這些字段的數據類型所對應的零值code

  7. 虛擬機對對象進行必要的設置,例如這個對象是哪一個類的實例、如何才能知道類的元數據信息、對象的哈希碼、對象的 GC 分代年齡信息等等,這些信息都存放在對象的對象頭(Object Header)之中。對象

    從虛擬機的視角來看,一個新的對象已經產生了,從 Java 程序角度來看,對象建立纔剛剛開始內存

  8. 執行 new 指令以後會接着執行 方法,把對象按照程序員的意願進行初始化 get

  9. 一個真正可用的對象纔算徹底產生出來。虛擬機

想要了解更多的話,請移步本人的學習筆記,若是以爲有幫助的話,請點一個star✨。

相關文章
相關標籤/搜索