BootStrap JRE/lib/rt.jar
|
ExtClassLoader JRE/lib/ext/*.jar
|
AppClassLoader CLASSPATH指定的所有jar或目录
| |
自定义类加载器
类加载器也是一个类,但BootStrap不是,它嵌入虚拟机,是最根部的加载器,加载下层类。
类加载器实行委托机制,如AppClassLoader发起加载类,则委托父类,则一直委托到BootStrap,再开始往下寻找类,
一直到AppClassLoader,如果它也找不到,则抛出异常
自定义类加载器必须继承ClassLoader类,并指定一个父类加载器。
1.程序运行阶段,碰到一个类,先调用该线程里的类加载器加载类。
可以为线程指定类加载器。
2.如果类A引用类B,JAVA虚拟机将使用加载了A的类加载器加载B。