'深入理解Java虛擬機'2018-04-18

Java代碼編譯時期是將Java文件編譯為Class文件。
Java代碼執(zhí)行時期:

裝載

  • JVM通過類的全限定名獲取描述此類的.class文件,通過該文件將類的信息加載到JVM方法區(qū),然后在堆中實例化一個java.lang.Class對象,作為方法區(qū)中這個類的入口。

連接

  • 驗證,確認(rèn)類型符合Java語言的語義,并且不會危及JVM的完整性
  • 準(zhǔn)備,為類變量(Static變量)分配內(nèi)存,設(shè)置初值(通過內(nèi)存清零實現(xiàn),此階段不執(zhí)行Java代碼),final修飾的常量初始值就是Java代碼中的初始值
  • 解析,在類的常量池中尋找類,接口,方法和字段的符號引用,將符號引用替換為直接引用

初始化

  • 為類變量賦予Java代碼中的初始值

對象生命

類可以被使用了。調(diào)用類變量,類方法,實例化類等。實例化類會創(chuàng)建一個新的對象,開啟該對象的生命周期。對象生命周期:

  • 對象實例化,在堆中為對象分配內(nèi)存,清零,賦予正確的初始值
  • 垃圾收集,當(dāng)對象不再被引用的時候
  • 對象終結(jié),被垃圾收集后

類卸載

  • 將類的內(nèi)存空間清空
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容