深入理解JVM 二:類加載器雙親委託機制
類加載器層次分類
類加載器的發親委託機制
- 在父親委託機制中,各個加載器按照父子關係形成了樹形結構,除了根類加載器之外,其餘類加載器都有且只有一個父加載器。
-
Bootstrap ClassLoader/啓動類加載器
- $JAVA_HOME中jre/lib/rt.jar裏所有的class,由C++實現,不是ClassLoader子類
-
Extension ClassLoader/擴展類加載器
- 負責加載Java平臺中擴展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar 或-Djava.ext.dirs指定目錄下的jar包
-
App ClassLoader/系統類加載器
- 負責加載classpath中指定的jar包及目錄中class
若有一個類加載器能夠成功加載Test類,那麼這個類加載器被稱爲
定義類加載器,所有能成功返回Class對象引用的類加載器包括定義類加載器)都被成爲初始類加載器
示例:
public class MyTest{
public static void main(String[] args)throws Exception{
Class<?> clazz=Class.forName("java.lang.String");
System.out.prinlin(clazz.getClassLoader);
}
}