1.类装载器的工作机制
类装载器就是寻找类的字节码文件并构造出类在JVM内部表示对象的组件。在Java中,类装载器把一个类装入JVM中,需如下步骤:
(1)装载:查找和导入吃Class文件
(2)链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的
1)校验:检查载入Class文件数据的正确性
2)准备:给类的静态变量分配存储空间
3)解析:将符号引用转成直接引用
(3)初始化:对类的静态变量、静态代码执行初始化工作
2.类装载工作由ClassLoader及其子类负责。ClassLoader是一个重要的Java运行时系统组件,它负责在运行时查找和装入Class字节码文件。
3.JVM在运行时会产生3个ClassLoader:
根装载器、ExtClassLoader(扩展类装载器)、AppClassLoader(应用类装载器)。
4.根装载器不是ClassLoader的子类,负责装载JRE的核心类库;
5.ExtClassLoader和AppClassLoader都是ClassLoader的子类,其中ExtClassLoader负责装载JRE扩展目录ext中的JAR包;AppClassLoader负责装载Classpath路径下的类包。
6.这3个类装载器之间存在父子关系,根装载器是ExtClassLoader的父装载器,ExtClassLoader是AppClassLoader的父装载器。在默认情况下,使用AppClassLoader装载应用程序的类。
7.JVM装载类时时使用“全盘负责委托机制”,“全盘委托”是指当一个ClassLoader装载一个类时,除非显式地使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;“委托机制”是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径下查找并装载目标类。