系统在运行一个java文件时简单的过成描述
1.操作系统底层调用jvm文件创建虚拟机
2.虚拟机调用c++代码创建引导类加载器,
3.通过类加载器加载java文件获取类信息
4.调用类方法
启动时的流程图什么是双亲委派.就是默认appclassload加载时会先判断一下自己有没有加载过.如果没有着用父属性extclassload加载,同理extclassload也会判断下自己有没有加载过,没有的话再用引导类加载器判断有没有加载过.都没有加载过的话会再如此反向加载,先用ext加载器去加载,然后再用app加载器.这样的好处不会重复加载,如下图
双亲委派通过查看ClassLoader的源码会发现ExtClassLoader和AppClassLoader都是继承ClassLoader,
所以我们也可以自定义加载器,继承ClassLoader 重写findClass和LoadClass方法就可以.
网友评论