双亲委派机制
提问:什么是双亲委派?
首先,我们先引入类加载模式
在java中有4中类加载器,他们分别是(最顶层到最底层):
- 启动类加载器:这个加载器是最顶层的类加载器,由C++编写,负责加载JDK的核心类库。
- 扩展类加载器:这个加载器是用于加载Java的扩展类库(如jre/lib/ext目录下的类)。
- 应用程序类加载器:这个类加载器用于加载用户类路径下的类,是默认的类加载器。
- 用户自定义加载器:这个加载器是用于加载特定路径的类,由用户继承ClassLoader实现。
然后解释什么是双亲委派机制
双亲委派机制的核心就是:当一个类加载器收到加载请求时,先委托给它的上一层级的类加载器(父亲)依次类推。只有上一层级的加载器无法加载时,才会自己进行类的加载。这种机制保证了类的唯一性和安全性(不能进行类的伪造及避免类被篡改)。
最后,理解类加载的完整过程
类加载分为5步:
- 加载:通过类的全限定类名获取字节流,将其转为方法区的运行时的数据结构,主要生成Class对象。
- 验证:校验字节流的合法性(比如格式,语义,字节码等),确保安全。
- 准备:为类的静态变量分配内存并设置默认初始值。(比如int默认设置为0)。
- 解析:将常量池中的符号引用替换为直接引用。
- 初始化:执行类的静态代码块和静态变量的赋值操作,这是类加载的最后阶段。
学会了吗?
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Chu_Yu-blog!





