JVM 類載入機制 類載入器

2021-10-08 17:09:22 字數 1883 閱讀 7278

類宣告週期

檔案格式驗證:基於二進位製流,只有這一步是基於二進位製流,後續步驟都是基於方法區資料

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 等,資料庫 準備階段正式為類變數分配記憶體並設定變數的初始值。這些變數使用的記憶體都將在方法區中進行分配 這裡的初始值並...