Object obj = new Object();
git
虛擬機遇到 new 指令程序員
檢查指令的參數是否能在常量池中定位到一個類的符號引用github
檢查符號引用是否已經被加載、解析和初始化。若是沒有則進行類加載。學習
虛擬機爲新生對象分配內存(對象所需的內存大小在類加載完就可肯定)ui
將分配到的內存空間都初始化爲零值(不包括對象頭)這一步操做保證了對象的實例字段在 Java 代碼中能夠不賦初始值就直接使用,程序能訪問到這些字段的數據類型所對應的零值code
虛擬機對對象進行必要的設置,例如這個對象是哪一個類的實例、如何才能知道類的元數據信息、對象的哈希碼、對象的 GC 分代年齡信息等等,這些信息都存放在對象的對象頭(Object Header)之中。對象
從虛擬機的視角來看,一個新的對象已經產生了,從 Java 程序角度來看,對象建立纔剛剛開始內存
執行 new 指令以後會接着執行
一個真正可用的對象纔算徹底產生出來。虛擬機
想要了解更多的話,請移步本人的學習筆記,若是以爲有幫助的話,請點一個star✨。