跟我一起學JVM(七)——類加載器

(一)類加載器

類加載器的作用:
將Class文件加載進JVM方法區,並在方法區中創建一java.lang.Class對象作爲外界訪問這個類的接口。

類加載器的種類:
(1)啓動類加載器
加載JAVA_HOME/lib下的class文件
(2)擴展類加載器
加載JAVA_HOME/lib/ext下的class文件
(3)應用程序類加載器
加載用戶classpath下的class文件

注意:比較兩個類是否相等,只有當這兩個類由同一個類加載器加載纔有意義,此時通過Class對象的equals執行結果爲True,若同一個class文件被兩個不同的類加載器加載,那麼加載後得到的類是不一樣的。

(二)雙親委派模型

雙親委派的流程(自下而上搜尋類加載器)
在這裏插入圖片描述
如果一個類加載器收到了類加載的請求,它不會首先自己去嘗試加載這個類,而是把請求委派給父類加載器去完成。

好處:Java類隨着它的類加載器一起具備了一種帶有優先級的層級關係,對於保證Java程序穩定運作很重要。

邏輯:先檢查是否已經被加載過,若沒有加載則調用父加載器的loadClass()方法,若父類加載器爲空則默認使用啓動類加載器作爲父加載器。如果父類加載失敗,拋出ClassNotFoundException異常後,再調用自己的findClass()方法進行加載。

在這裏插入圖片描述


Instagram: https://www.instagram.com/barrywzc/
Twitter: https://twitter.com/BarryWa34098316
Bilibili: https://space.bilibili.com/473161964
GitHub: https://github.com/wzcwzcwzc
Patreon: https://www.patreon.com/wzcspace
WeChat: wzcspace


Please leave a LIKE and SUBSCRIBE for more content!

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