初學者輕鬆搞定,JVM類加載

1、什麼是虛擬機的類加載機制?

Java虛擬機把Class文件加載到內存中,並且對數據進行了校驗、轉換解析和初始化這樣過程,最終才形成可以被虛擬機直接使用的Java類型,這樣的過程就叫類加載機制。

2、類加載的過程

Java虛擬機中類加載的全過程:加載、連接、初始化三個階段,其中連接分爲驗證、準備和解析。

3、加載

1)通過一個類的全限定名來獲取定義此類的二進制字節流。

2)將這個字節流所代表的靜態存儲結構轉化爲方法區的運行時數據結構。

3)在內存中生成一個代表這個類的java.lang.Class對象,作爲方法區這個類的各種數據的訪問入口。

4、 連接

1)驗證:該階段主要是確保class文件的字節流中包含信息是否符合當前JVM的要求,並且能被當前版本的虛擬機處理。包括四個驗證:文件格式驗證、元數據驗證、字節碼驗證和符號引用驗證。

2)準備:爲類變量分配內存並且設置該類變量的默認初始值,即零值。

3)解析:將常量池內的符號應用轉換爲直接引用的過程。

5、初始化

類的初始化階段是類加載過程的最後一個步驟。初始化階段就是執行構造方法()的過程。也是Java虛擬機才真正開始執行類中編寫的Java程序代碼,

6、工作原理(面試愛問)

(1)如果一個類加載器收到了來加載請求,它 並不會自己先去加載,而是把這個請求委託給父類的加載器去執行;

(2)如果父類加載器還在其他父類加載器,則進一步向上委託,依次遞歸,請求最終將達到頂層的啓動類加載器;

(3)如果父類加載器可以完成加載器無法完成此加載任務,子類加載纔會嘗試自己去加載,這就是雙親委託派模式。

7、雙親委派機制優勢

避免類的重複加載保護程序安全,防止核心API被隨意篡改8、判斷兩個類是否爲一個類

在JVM中表示兩個class對象是否爲同一個類存在兩個必要條件

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