1.ClassLoader
名稱 | 負責 | 可訪問 |
---|---|---|
啓動類加載器(Bootstrap) | 將Java_home/lib的類庫加載(比如rt.jar)加載到內存, | 使用C/C++編寫時JVM的一部分,不能訪問 |
拓展類加載器(Extension) | 將lib/ext 或者系統變量 java.ext.dir 指定的位置中的類庫加載到內存中, | 外部加載器使用Java編寫,可以訪問 |
應用加載器(Application) | 負責將Classpath 的類(通常爲自定義的類)加載到類庫,因爲這個類的加載器是getSystemCalssLoader()方法的返回值,所以也叫系統類加載器(System) | Java 編寫,可訪問 |
更多細節查看Java 類加載過程 和 類的加載器ClassLoader(重點)
2.雙親委派機制
1.步驟
(1) 類加載器ClassLoader 收到加載類的請求
(2)類加載器將這個請求委託給父類加載器去完成,一直向上委託,直到啓動類加載器(引導類加載器)
(3)啓動類加載器檢查是否可以加載這個類,能加載就結束,時候當前的加載器,不能加載就拋出異常通知子類加載器(ext 或者 app)進行jiaz
(4)重複步驟(3)