java 的类加载采用双亲委派的方式
自下而上检查,该类是否已经加载
子类没有找父类
自顶向下进行实际的查找和加载,每个类加载器有自己的范围,没有的让子类找。
比如
bootstroop
加载lib/rt.jar charset.jar 的核心类,c++实现
extension
加载扩展jar包
jre/lib/*.jar,或由-Djava.ext.dirs 指定
App 加载classpath 指定的内容
custom Classload 自定义ClassLoad
大致流程图如下
如何自定义ClassLoad
ClassLoader l = new Test_Class();// 任何class
Class clazz = l.loadClass(com.play.jvm.hello);
clazz.m();
System.out.println(l.getClass().getClassLoader());
System.out.println(l.getParent());
这不就是反射吗 ,在tomcat 和热部署中经常用到