双亲委派机制
加载器等级
1. APP 应用程序加载器
2. EXT 扩展类加载器
3. BOOT (最终执行)【根加载器 或者叫启动类加载器】
注:APP–> EXT --> BOOT (最终执行)
类加载步骤
步骤一:类加载器收到类加载的请求。
步骤二:将这个请求委托给父类加载器去完成。一直向上委托,直到启动类加载器(根 加载器)。
步骤三:启动加载器检查是否能够加载当前这个类 。能加载就结束,使用当前的加载器。否则,抛出异常,通知子加载器进行加载。
步骤四:重复步骤三。
注:如果最终到 应用程序加载器也没有找到,则抛出异常 Class Not Found
双亲委派机制的作用
1、防止重复加载同一个.class
。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。
2、保证核心.class
不能被篡改。通过委托方式,不会去篡改核心.class
,即使篡改也不会去加载,即使加载也不会是同一个.class
对象了。不同的加载器加载同一个.class
也不是同一个Class
对象。这样保证了Class
执行安全。