類宣告週期
檔案格式驗證:基於二進位製流,只有這一步是基於二進位製流,後續步驟都是基於方法區資料
1.魔數: cafe babe 開頭
2.主次版本是否在當前jvm支援範圍
3.常量池的常量是否不被支援
4.....很多很多規範
元資料驗證
1.類是否有父類,(object)
2.匪類是否繼承了被final修飾的類
3......各種其他驗證
位元組碼驗證符號引用驗證準備靜態變數值
jvm將常量池內的符號引用替換為直接引用的過程
1.類/介面解析
2.欄位
3.方法
4.....
(-xx:+traceclassloading 觀察類載入情況)
1.使用new,getstatic,putstatic,invokestatic 這4個命令(jvm命令,在class反彙編後看到)時
2.new乙個物件
3.讀取或設定乙個類靜態字段
4.呼叫乙個類的靜態方法
5.反射reflect
6.初始化類時,要先觸發父類的初始化
7.如果通過子類來訪問父類的靜態變數,則只會觸發父類的初始化,子類的載入
8.定義乙個類的陣列,不會觸發初始化, 會觸發父類載入,不會觸發子類載入
9.xx類列印xx2類常量不會觸發xx2的初始化(在編譯時,該常量寫入了xx類的常量池中)
10.列印乙個常量,該常量引用了另外乙個常量,此時會觸發初始化
-jvm會先初始化執行main方法的主類
-1.7後加入的動態語言支援, methodhandle 最後解析結果ref_getstatic,ref_putstatic....
-1.8後加入的default方法,介面實現類初始化
三層類載入器
1.啟動類載入器 bootstrap class loader
2.擴充套件類載入器 extension class loader
雙親委派模型
雙親委派模型的好處
類載入唯一,穩定
tomcat 打破雙親委派模型,為了應用隔離
2.例子jdbc, dubbo
3.執行緒的上下文類載入器
4.破壞雙親委派模型
5.基於介面程式設計+使用策略模式
osgi做一下了解
JVM類載入機制 類載入器
一 概念 通過乙個類的全限定名來獲取描述此類的二進位制位元組流 實現這個動作的 模組成為 類載入器。4 雙親委派模型 1 定義 除了頂層的啟動類載入器外,其餘的類載入器都應當有自己的父類載入器,且載入器之間的父子關係一般不會繼承,而是使用組合關係來復用父載入器的 2 工作過程 如果乙個類載入器收到了...
JVM 類載入機制
1 載入步驟 jvm 類載入機制分為五個部分 載入,驗證,準備,解析,初始化。2 類載入器 3 雙親委派 1 什麼是雙親委派?當乙個類收到了類載入請求,他首先把這個請求委派給父類去完成,每乙個層次類載入器都是如此,因此所有的載入請求都應該傳送到啟動類載入其中,只有當父類載入器反饋自己無法完成這個請求...
Jvm類載入機制
類載入的過程 類載入器 控制台列印輸出 主要分為以下三步 載入源包括很多種,如檔案 class檔案,jar檔案 網路 計算生成的乙個二進位製流 proxy 由其他檔案生成 jsp 等,資料庫 準備階段正式為類變數分配記憶體並設定變數的初始值。這些變數使用的記憶體都將在方法區中進行分配 這裡的初始值並...