Java類加載機制

類加載過程

1、加載

2、驗證

3、準備

4、解析

5、初始化

雙親委派模型

從Java虛擬機的角度來講,只存在兩種不同的類加載器:一種是啟動類加載器(Bootstrap ClassLoader),這個類加載器使用c++語言實現,是虛擬機自身的一部分;另一種就是所有其他的類加載器,這些類加載器都由Java語言實現,獨立于虛擬機外部,并且全部都繼承自抽象類java.lang.ClassLoader

雙親委派模型

1、啟動類加載器(Bootstrap ClassLoader):這個類加載器負責加載<JAVA_HOME>\lib目錄中的。

2、擴展類加載器(Extension ClassLoader):這個類加載器負責加載<JAVA_HOME>\lib\ext目錄中的。

3、應用程序類加載器(Application ClassLoader):這個類加載器負責加載用戶類路徑上所指定的類庫。

雙親委派模型的工作過程:

如果一個類加載器收到類加載請求,首先它不會自己嘗試去加載這個類,而是把加載請求委派給父類加載器去完成,每一個層次的類加載器都是如此,無論哪一個類加載器請求加載最終都會委派給最頂層的啟動類加載器進行加載。只有當父類加載器反饋自己無法完成加載時,子類才會嘗試自己去加載。

這樣有一個顯而易見的好處就是Java類隨著它的類加載器一起具備了一種有優先級的層次關系。例如java.lang.Object,它存放在rt.jar中,無論哪個類加載器進行加載最終都會委派給頂層啟動類加載器進行加載,因此Object類在程序的各種類加載器中都是同一個類。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容