1. 程式人生 > >類載入器的作用範圍和雙親委派模型

類載入器的作用範圍和雙親委派模型

JVM定義把類載入階段中的通過類的全名稱,取得此類的“二進位制位元組流”這種操作的實現的程式碼模組叫做類載入器

public ClassLoader getClassLoader();取得當前類載入器

類載入器分為四種,按照從頂層到底層的順序為:Bootstrap:啟動類載入器、ExClassLoader:擴充套件類載入器、AppClassLoader:應用程式類載入器、自定義類載入器

Bootstrap:啟動類載入器是最頂層的父類,是用C++實現的,是JVM的一部分,負責載入存放於《Java-hone\lib》目錄中能被JVM識別的類庫,無法被java程式直接呼叫

ExtClassLoader:擴充套件類載入器,《Java-hone\lib\ext》目錄中的類庫,使用java語言實現,可以在程式中直接使用

AppClassLoader:應用程式類載入器,負責載入Classpath的類庫,如果程式中沒有自定義類載入器,則此類就是程式中預設的類載入器

雙親委派模型:類載入器的層次關係叫做雙親委派模型

除了頂層的啟動類載入器外,其他的類載入器都應該有自己的父類載入器

雙親委派模型的工作流程:如果一個類載入器收到了類載入的請求,他不會自己首先去嘗試載入這個類,而是把這個請求委託給父類,父類無法完成時才會向下讓子類載入器嘗試載入

這樣的好處是安全性高,不會使得程式載入自己定義的同名類庫