首页 > 其他 > 详细

双亲委派模型

时间:2019-03-13 18:30:49      阅读:181      评论:0      收藏:0      [点我收藏+]

双亲委派模型

从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言来实现,是虚拟机自身的一部分;另外一种就是其他所有的类加载器,这些类加载器都是有Java语言实现的,独立于虚拟机外部,并且全部继承自抽象类java.lang.ClassLoader

? congJava开发人员的角度来讲,类加载器还可以划分的更加细致一些,绝大部分Java语言使用到下面3种系统提供的类加载器。

  • 启动器类加载器(Bootstrap ClassLoader):前面已经介绍过,这个类加载器负责将放在\lin目录中的,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的(济南文件名识别,如rt.jar,名字不符合的类库即使在lib文件目录中也不会被加载到虚拟机内存中。启动类加载器无法被Java程序直接应用,用户在编写自定义类加载器时,如果需要把加载请求为派给引导类加载器,那直接使用null代替即可。
  • 拓展类加载器(Extension ClassLoader):这个加载器由sun.musc.Launcher$ExtClassLoader实现,他负责加载\lib\ext目录中的,或者被java.ext.dirs系统环境变量所指定的路径中的所有类库,开发者可以直接使用拓展类加载器。
  • 应用程序类加载器(Application ClassLoader):这个类加载器由sun.misc.Launcher$AppClassLoader实现,由于这个类加载器是ClassLoader中的getSystemClassLoader()方法的返回值,所以一般也将他称作系统类加载器。负责加载用户类路径上指定的类库,开发者可以直接使用这个类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下就是这个应用程序中默认的类加载器。

破坏双亲委派模型

  • jdk1.2之前的loadClass()
  • 自身缺陷的需要基础类调用回用户的代码。
  • 热部署

双亲委派模型

原文:https://www.cnblogs.com/Heliner/p/10524915.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!