new一個對象jvm會怎麼作

當虛擬機遇到一條指令 new Object()時,指針

首先會去檢查這個指令的參數是否在運行時常量池中能定位到這個類的符號引用,並檢查這個符號引用表明的類是否已被加載,解析,初始化,若是沒有,開始類加載。對象

類加載完成後,開始爲對象分配內存。內存

拿到內存後,首選初始化爲0,(變量默認初始化爲0)虛擬機

而後虛擬機開始對對象頭設置必要的屬性,對象的hash碼,GC分代年齡,指向鎖的指針等數據。對象在內存中分配時是有三塊區域的,對象頭,實例數據,對齊填充。hash

而後將對象引用入棧,new指令結束。變量

相關文章
相關標籤/搜索