1.什么叫双亲委派机制?
双亲委派是一个孩子向父亲方向,然后父亲向孩子方向的双亲委派过程
总结:自下(从App开始)而上进行检查,自上而下进行加载。
2.为什么要使用双亲委派的机制?
1)主要原因--安全问题
反证法:
假如给你任何一个自定义的class,都可以自由的把他load到内存的话,此时可以给这样一个class(java.lang.String),直接把Oracle内部写的核心String给他替换掉交给我的自定义的ClassLoader,把自己写的String加载到内存,接下来把整个这样的东西打包成一个类库交给我的客户,客户在输入密码的时候他会把密码存储为一个String类型的对象,此时可以窃取客户的密码,存在安全风险。
2)次要原因---避免资源浪费
上面已经加载完了就不需要重新加载了(避免二次加载)
补充知识:
类加载器的流程图
双亲委派机制流程图: