7、类加载器双亲委派机制
7.1、类加载器结构
在“双亲委托机制”中,各个类加载器之间按照父子关系形成树形结构,除了根加载器之外,其余的类加载器都有且只有一个父加载器。
7.2、什么是双亲委派机制?
当某个类加载器加载某个.class
文件时,它首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。
图解如下:
7.3、案例
package com.shtec.classLoader; public class Test03 { /* * 使用【双亲委派机制】分析Demo03类的加载过程: * 1、调用“系统或应用类加载器”加载Demo03的.class文件 * 2、“系统或应用类加载器”交给它的父加载器“ext扩展类加载器”进行加载 * 3、“ext扩展类加载器”又将Demo03.class文件交给“根加载器”进行加载 * 4、“根加载器”加载不了---->ext扩展类加载器加载不了---->系统或应用类加载器加载 * 最终由系统类加载器“AppClassLoader”加载该类 */ public static void main(String[] args) throws Exception { Class<?> clazz = Class.forName("com.shtec.classLoader.Demo03"); System.out.println(clazz.getClassLoader()); //输出: //sun.misc.Launcher$AppClassLoader@73d16e93 } } //定义一个内部类 class Demo03{ }