java默認的classloader:java
1.BootStrap ClassLoader:稱爲啓動類加載器,是Java類加載層次中最頂層的類加載器,負責加載JDK中的核心類庫,如:rt.jar、resources.jar、charsets.jar等,可經過以下程序得到該類加載器從哪些地方加載了相關的jar或class文件。jvm
2.Extension ClassLoader:稱爲擴展類加載器,負責加載Java的擴展類庫,默認加載JAVA_HOME/jre/lib/ext/目下的全部jar。spa
3.App ClassLoader:稱爲系統類加載器,負責加載應用程序classpath目錄下的全部jar和class文件。ssl
java的classloader採用的雙親委託機制,每一個classloader實例都包含一個父classloader的引用,頂層classloader沒有父類加載器,雙親機制原理以下:io
當須要加載某個類時,自上而下,先由父加載器進行加載,若是沒有再往下逐級查找加載,直到委託者加載某個類,若是還沒找到,直接拋出classnofound異常。class
classloader和class徹底相同時,jvm才認爲這個類是相同的,不然會出現類型轉換異常。原理