作用:为了保证安全
1.类加载器收到加载请求
2.将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
3.启动类加载器检查是否能加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常通知子类加载器进行加载
4.重复步骤3
5.如果都找不到就会报一个错Class Not Found -
具体流程:
1.当AppClassLoader加载一个class时,它不会尝试加载这个类,而是把类加载请求委派给父类加载器ExtClassLoader去完成。
2.当父类ExtClassLoader加载到这个.class时,他也不会尝试加载这个类,而是把类加载请求委派给父类加载器BootstrapClassLoader。
3.当BootstrapClassLoader加载到这个.class时,它会查找该类是否存在,如果不存在,就往下传递,交给ExtClassLoader,如果ExtClassLoader在自己相应的包中也没找到对应的类,就交给AppClassLoader来加载,如果AppClassLoader也没有,就报ClassNotFoundException();