类加载时机:
- new,静态属性, 静态方法调用。
- 获取Class对象如People. Class
- 加载子类时需要提前加载父类
- 启动JVM,main函数所咋的类需要加载
启动类加载器是用c/c++实现的所以也叫顶级父类加载器,如果一个类的加载器是启动加载器,则返回null(因为java是面向类和对象的,所有的模块都是一个类,都需要加载器,最后只能是用其他语言完成的。)
蓝色线表示检查是否之前加载过(即从子类往父类查找),如果加载过就返回Classpath。
红色线开始尝试从父类往子类加载,知道找到能加载的启动器。若没有贼抛出异常ClassNotFoundException
双亲委派模型优点?
- 避免类的重复加载People. Jar
- .安全性String-> Boostrap ClassLoader