5、JVM類加載機制

1、類加載步驟

加載-》驗證-》準備-》解析-》初始化-》使用-》卸載
鏈接:驗證-》準備-》解析

初始化時機:
1)new、invoke指令
2)java.lang.refect反射調用
3)初始化子類時,如果父類沒初始化,則觸發父類初始化。

2、類加載過程

2.1 加載

1)通過類的全限定名獲取二進制字節流
2)將字節流所代表的靜態結構轉化爲方法區的運行時數據結構
3)在內存中生成一個代表這個類的java.lang.Class對象,作爲方法區這個類的各種數據入口。

2.2 驗證

1)文件格式驗證
2)元數據驗證
3)字節碼驗證
4)符號引用驗證

2.3 準備

正式爲類變量分配內存並設置類變量初始值(零值)

2.4 解析

將常量池的符號引用替換爲直接引用

2.5 初始化

執行init()和static{}

3、類加載器

3.1 雙親委派模型

1)Boostrap ClassLoader:加載java_home/lib/rt.jar
2)擴展類加載類:加載java_home/lib/ext/*.jar
3)應用程序類加載類:加載classpath的類
4)自定義類加載器

在類加載器加載類之前,先看父類加載器能不能加載,如果能加載,則用父類加載器加載,否則才自已加載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章