双亲委派模型

双亲委派目的好处:

  1. 主要是为了安全性,避免用户自己写的类动态替换了Java的核心类,比如自己写了String替换了Java的String
  2. 同时避免了类的重复加载,JVM对于类的区分,不仅仅根据类名,不同的类加载器加载的相同class文件也是不同的两个类。

 

原理:

jdk中存在三个类加载器:BootStrapClassLoader、ExtClassLoade、AppClassLoader。

它们三个分别加载不同的路径的类,BootStrapClassLoader(顶级加载器)默认加载JAVA_HOME下lib中的jar和class,ExtClassLoade(扩展类加载器)默认加载lib下的ext中的jar和class,AppClassLoader(系统类加载器)负责加载classpath下的类文件,自己写的jar和引用jar都是由它加载。

类加载流程是系统类加载器加载类时,不会直接加载而是先向上委派查询扩展类加载器是否有缓存,有返回,无继续向上委派到顶级加载器执行同样过程,如果顶级类加载器也没有,则查找自己路径下有无该类,有返回,无则向下查找扩展类加载器执行同样操作,扩展类加载器也无的话,系统类加载器也执行同样操作,如果也无返回类找不到异常。

 


__EOF__

本文作者blanset
本文链接https://www.cnblogs.com/blanset/p/16810913.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   求道之愚者  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示