java 类加载过程

java 的类加载采用双亲委派的方式

自下而上检查,该类是否已经加载
子类没有找父类

自顶向下进行实际的查找和加载,每个类加载器有自己的范围,没有的让子类找。
比如

bootstroop

加载lib/rt.jar charset.jar 的核心类,c++实现

extension

加载扩展jar包
jre/lib/*.jar,或由-Djava.ext.dirs 指定

App 加载classpath 指定的内容

custom Classload 自定义ClassLoad

大致流程图如下
java 类加载过程_第1张图片

如何自定义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());

java 类加载过程_第2张图片

这不就是反射吗 ,在tomcat 和热部署中经常用到

你可能感兴趣的:(java,开发语言)