當前位置:
首頁 > 知識 > JVM類載入過程 & 雙親委派模型

JVM類載入過程 & 雙親委派模型


JVM類載入過程 & 雙親委派模型

聲明類載入過程

類載入機制:JVM將類描述數據從.class文件中載入到內存,並對數據進行,解析和初始化,最終形成被JVM直接使用的Java類型。

——《深入理解Java虛擬機 JVM高級特性與最佳實踐》

  • 載入:載入階段由類載入器負責,過程見類載入器;

  • 驗證:驗證階段負責驗證類數據信息是否符合JVM規範,是否是一個有效的位元組碼文件;

  • 準備:準備階段負責為類中static變數分配空間,並初始化(與程序無關,系統初始化);

  • 解析:解析階段負責將常亮池中所有符號引用轉換為直接引用;

  • 初始化:初始化階段負責將所有static域按照程序指定操作對應執行(賦值static變數,執行static塊)

上述階段通常都是交叉混合允許,沒有嚴格的先後執行順序;

類載入器

類載入器的主要任務:是類載入過程中的載入操作:根據一個類的全限定名讀取該類的二進位位元組流到JVM內部,然後轉換為一個對應的java.lang.Class對象實例;

開發者可以通過編寫自定義類載入器來自定義類的載入規則

類載入器分類啟動類載入器/Bootstrap ClassLoader

在HotSpot虛擬機中,Bootstrap ClassLoader用C++語言編寫並嵌入JVM內部,主要負載載入JAVA_HOME/lib目錄中的所有類,或者載入由選項-Xbootcalsspath指定的路徑下的類;

拓展類載入器/ExtClasLoader

ExtClassLoader繼承ClassLoader類,負載載入JAVA_HOME/lib/ext目錄中的所有類型,或者由參數-Xbootclasspath指定路徑中的所有類型;

應用程序類載入器/AppClassLoader

ExtClassLoader繼承ClassLoader類,負責載入用戶類路徑ClassPath下的所有類型,一般情況下為程序的默認類載入器;

自定義載入器

Java虛擬機規範將所有繼承抽象類java.lang.ClassLoader的類載入器,定義為自定義類載入器

雙親委派模型

雙親委派過程:當一個類載入器收到類載入任務時,立即將任務委派給它的父類載入器去執行,直至委派給最頂層的啟動類載入器為止。如果父類載入器無法載入委派給它的類時,將類載入任務退回給它的下一級載入器去執行;

除了啟動類載入器以外,每個類載入器擁有一個父類載入器,用戶的自定義類載入器的父類載入器是AppClassLoader;

雙親委派模型可以保證全限名指定的類,只被載入一次;

雙親委派模型不具有強制性約束,是Java設計者推薦的類載入器實現方式;

參考

[1] 《Java虛擬機精講》

[2] 《深入理解Java虛擬機 JVM高級特性與最佳實踐》

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

關於微信和支付寶自動退款介面的接入總結
Oracle CDC簡介及非同步在線日誌CDC部署示例
Amazing ASP.NET Core 2.0

TAG:達人科技 |

您可能感興趣

外用護膚品難以吸收?采美365網:ATeDS油水雙親入膚系統,剖析皮膚層
又是只能過過眼癮!這雙親友限定Air Jordan 4 White Cement真的很心動!
韓國人看中國的兒童節&雙親節
Cell:改寫教科書!華人學者造出雙親相同的小鼠!有望解放女性!
哺乳動物胚胎首次分裂過程中雙親染色體保持隔離
父母雙親
賈老闆穿的這雙親友限定Air Jordan 3 「Quai 54」,買不到也得看看!
金鐘國韓國父母節上傳全家福照片 雙親出鏡引發關注(圖)
黃曉明母親節帶雙親香港旅行,黃媽媽手上的鑽戒比baby的婚戒還大
佛教音樂:雙親佛
第一夫人雙親獲綠卡,被質疑屬於特朗普力除的「鏈式移民」
失去雙親的小野鴨,和競爭對手潛鳥組成一家三口,專家也看懵了
宋一國:雙親節公開三胞胎親筆信「感謝爸爸、媽媽養育我」
手相:相學中大拇指代表父母,通過你的大拇指可看出你雙親運勢
七夕節,中國雙親的浪漫
文青:懷念雙親
闊別十六年的重逢 湘潭夫妻找回失蹤兒子 湘潭第一例DNA雙親活體對比找回的失蹤兒童
30歲華裔男子手刃雙親,殺死母親重傷父親!
特朗普與槍擊案中失去雙親的嬰兒合照:豎起大拇指,目的不言而喻
尤敬東:小年祭雙親