摘要:擴展類加載器這個類加載器負責加載目錄中的。應用程序類加載器這個類加載器負責加載用戶類路徑上所指定的類庫。例如,它存放在中,無論哪個類加載器進行加載最終都會委派給頂層啟動類加載器進行加載,因此類在程序的各種類加載器中都是同一個類。
類加載過程
1、加載
2、驗證
3、準備
4、解析
5、初始化
雙親委派模型
從Java虛擬機的角度來講,只存在兩種不同的類加載器:一種是啟動類加載器(Bootstrap ClassLoader),這個類加載器使用c++語言實現,是虛擬機自身的一部分;另一種就是所有其他的類加載器,這些類加載器都由Java語言實現,獨立于虛擬機外部,并且全部都繼承自抽象類java.lang.ClassLoader
雙親委派模型
1、啟動類加載器(Bootstrap ClassLoader):這個類加載器負責加載
2、擴展類加載器(Extension ClassLoader):這個類加載器負責加載
3、應用程序類加載器(Application ClassLoader):這個類加載器負責加載用戶類路徑上所指定的類庫。
雙親委派模型的工作過程:
如果一個類加載器收到類加載請求,首先它不會自己嘗試去加載這個類,而是把加載請求委派給父類加載器去完成,每一個層次的類加載器都是如此,無論哪一個類加載器請求加載最終都會委派給最頂層的啟動類加載器進行加載。只有當父類加載器反饋自己無法完成加載時,子類才會嘗試自己去加載。
這樣有一個顯而易見的好處就是Java類隨著它的類加載器一起具備了一種有優先級的層次關系。例如java.lang.Object,它存放在rt.jar中,無論哪個類加載器進行加載最終都會委派給頂層啟動類加載器進行加載,因此Object類在程序的各種類加載器中都是同一個類。
歡迎加入學習交流群569772982,大家一起學習交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67956.html
摘要:如果需要支持類的動態加載或需要對編譯后的字節碼文件進行解密操作等,就需要與類加載器打交道了。雙親委派模型,雙親委派模型,約定類加載器的加載機制。任何之類的字節碼都無法調用方法,因為該方法只能在類加載的過程中由調用。 jvm系列 垃圾回收基礎 JVM的編譯策略 GC的三大基礎算法 GC的三大高級算法 GC策略的評價指標 JVM信息查看 GC通用日志解讀 jvm的card table數據...
摘要:前面提到,對于數組類來說,它并沒有對應的字節流,而是由虛擬機直接生成的。對于其他的類來說,虛擬機則需要借助類加載器來完成查找字節流的過程。驗證階段的目的,在于確保被加載類能夠滿足虛擬機的約束條件。 Java 虛擬機將字節流轉化為 Java 類的過程。這個過程可分為加載、鏈接以及初始化 三大步驟。 加載是指查找字節流,并且據此創建類的過程。加載需要借助類加載器,在 Java 虛擬機中,類...
摘要:當程序使用某個類時,如果該類還沒被初始化,加載到內存中,則系統會通過加載連接初始化三個過程來對該類進行初始化。一旦一個類被加載到中之后,就不會再次載入了。它既可以從本地文件系統獲取二進制文件來加載類,也可以遠程主機獲取二進制文件來加載類。 當程序使用某個類時,如果該類還沒被初始化,加載到內存中,則系統會通過加載、連接、初始化三個過程來對該類進行初始化。該過程就被稱為類的初始化 類加載 ...
摘要:學習能更深入的理解這門語言,能理解語言底層的執行過程,深入到字節碼層次。 目錄 ? 前言 程序的運行 1.JVM類加載機制 ①一般在什么情況下會去加載一個類?也就是說,什么時候.class字節碼文件中加載這個類到JVM內存里來? ②驗證、準備、初始化 ③初始化 2.類加載器和雙親委派機制 ...
摘要:以上文中的類的加載過程為例,它的加載器為系統類加載器。自定義加載器編寫自定義加載器并不困難,只要繼承抽象類并覆蓋方法就行了。源碼來自參考資料類加載機制與類加載器架構深入探討類加載器 序 我是在關于Java的面試題里了解到類加載器的,在這之前從未想過Java里類是如何被加載、解析的,一直以為只要Import就好了。事實上Java類加載器是一塊非常重要的內容,可以用在類層次劃分、OSGi、...
閱讀 2567·2021-09-30 10:00
閱讀 3500·2021-09-22 10:54
閱讀 6257·2021-09-07 10:28
閱讀 2955·2019-08-29 13:53
閱讀 752·2019-08-29 12:42
閱讀 967·2019-08-26 13:51
閱讀 1264·2019-08-26 13:32
閱讀 3028·2019-08-26 10:39