类加载过程及双亲委派模型
1.类加载流程
类加载流程主要分为五个,分别是加载–》验证–》准备–》解析–》初始化。
其中加载的过程中的主要工作就是找到.class文件,并把他读入内存;
验证过程的主要工作就是根据Java虚拟机规范核对.class文件格式对不对;
准备过程的主要工作就是给类对象分配内存空间,在这个过程中静态成员变量的值也会被初始化为0;
初始化的主要工作就是真正对类对象里边的内容进行初始化,调用构造方法,执行代码块,调用父类…
2.双亲委派模型
双亲委派模型是用于解决找.class文件的模型,他描述了找.class文件的基本过程。
具体找的过程的话,JVM提供了三个类加载器,分别是BoostrapClassLoader、ExtensionClassLoader以及ApplicationClassLoader,他们三个各有分工。其中BooststrapClassLoader负责加载标准库中的类,ExtensionClassLoader负责加载JVM扩展库中的类,AppliactionClassLoader负责加载用户项目中的类。
这三个类加载器都有一个parent树形,指向自己的父亲类加载器。
具体加载一个类的话,首先是从ApplicaitonClassLoader开始,但是它会把加载任务交给自己的父亲类加载器,于是ExtensionClassLoader准备去加载,但是它也有父亲,所以也交给父亲,于是BootstrapClassLoader准备去加载,也想委托给自己的父亲类加载器,但是它的parent属性为空,所以自己开始加载。
类加载器之间存在委派关系,使用parent属性表示的,所以也叫做双亲委派模型,至于只有一个属性为什么不叫单亲委派模型就是翻译的问题了。