• 双亲委派模型


    双亲委派模型

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

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

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

    破坏双亲委派模型

    • jdk1.2之前的loadClass()
    • 自身缺陷的需要基础类调用回用户的代码。
    • 热部署
    内容来自博客园,拒绝爬虫网站
  • 相关阅读:
    第10组 Beta冲刺 (3/5)
    第10组 Beta冲刺 (2/5)
    第10组 Beta冲刺 (1/5)
    第10组 Alpha冲刺 (3/6)
    第10组 Alpha冲刺 (2/6)
    第10组 Alpha冲刺 (1/6)
    第一次作业
    第二次作业
    机器学习_第一次个人作业
    软工实践个人总结
  • 原文地址:https://www.cnblogs.com/Heliner/p/10524915.html
Copyright © 2020-2023  润新知