类加载器的父亲委托机制
在父亲委托机制中,各个加载器按照父子关系形成了树形结构,除了根类加载器之外,其余的类加载器都有且只有一个父加载器
启动类加载器 加载rt.jar
扩展类加载器 jre/lib/*.jar
若有一个类加载器能够成功加载Test类,那么这个类加载器被称为定义类加载器,所有能成功返回Class对象引用的类加载器(包括定义类加载器)都被称为初始类加载器
public class MyTest7 {
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("java.lang.String");
System.out.println(clazz.getClassLoader());
}
}
输出为null,说明是启动类加载器
public class MyTest7 {
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("java.lang.String");
System.out.println(clazz.getClassLoader());
Class<?> clazz2 = Class.forName("com.yshuoo.jvm.classloader.C");
System.out.println(clazz2.getClassLoader());
}
}
class C {
}
输出null和AppClassLoader 说明C是由应用类加载器加载