美文网首页
73.双亲委派模型

73.双亲委派模型

作者: SlideException | 来源:发表于2020-08-09 23:07 被阅读0次
/**
 * 每天一个知识点day73 TODO 双亲委派模型
 *
 * 自定义类加载器 ->
 *                 应用程序类加载器 -> 扩展类加载器 -> 启动类加载器
 * 自定义类加载器 ->
 *
 * 启动类加载器(Bootstrap ClassLoader):
 * 由C++语言实现(针对HotSpot),负责将存放在<JAVA_HOME>\lib目录或
 * -X bootclasspath参数指定的路径中的类库加载到内存中。
 *
 * 扩展类加载器(Extension ClassLoader):
 * 负责加载<JAVA_HOME>\lib\ext目录或java.ext.dirs系统变量指定的路径中的所有类库。
 *
 * 应用程序类加载器(Application ClassLoader):
 * 负责加载用户类路径(classpath)上的指定类库,我们可以直接使用这个类加载器。
 * 一般情况,如果我们没有自定义类加载器默认就是用这个加载器。
 *
 * 双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器,
 * 不过这里的类加载器之间的父子关系并不是通常所说的继承关系,而是通常使用组合关系
 * 来复用父类加载器的代码。
 *
 * 双亲委派模型在JDK1.2时期被引入,工作过程:
 * 如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个
 * 请求委派给父类加载器去完成,如果父类加载器还存在父类加载器,则进一步向上委托,
 * 依次递归,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,如果父类
 * 加载器可以完成类加载任务,就成功返回,只有当父加载器反馈自己无法完成这个加载
 * 请求(它搜索范围中没有找到所需的类)时,子类加载器才会尝试自己去完成加载。
 *
 * 优势:
 * 1.采用双亲委派模式的是好处是Java类随着它的类加载器一起具备了一种带有
 * 优先级的层次关系,通过这种层级关可以避免类的重复加载,
 * 当父亲已经加载了该类时,就没有必要子ClassLoader再加载一次。
 *
 * 2.其次是考虑到安全因素,java核心api中定义类型不会被随意替换,
 * 假设通过网络传递一个名为java.lang.Integer的类,通过双亲委托模式传递到
 * 启动类加载器,而启动类加载器在核心Java API发现这个名字的类,发现该类已被加载,
 * 并不会重新加载网络传递的过来的java.lang.Integer,
 * 而直接返回已加载过的Integer.class,这样便可以防止核心API库被随意篡改。
 *
 * 注意的是在JDK1.2之前,类加载尚未引入双亲委派模式,因此实现自定义类加载
 * 器时常常重写loadClass方法,提供双亲委派逻辑,从JDK1.2之后,
 * 双亲委派模式已经被引入到类加载体系中,自定义类加载器时不需要在自己写双亲委派的逻辑,
 * 因此不鼓励重写loadClass方法,而推荐重写findClass方法
 *
 */

相关文章

  • 73.双亲委派模型

  • Tomcat类载入器

    大家都知道,Java的类加载机制是双亲委派模型,那么什么是双亲委派模型呢?我们这里简要的说一下,双亲委派模型...

  • java类加载破坏双亲委派模型

    前面java类加载器与双亲委派模型中提到Java采用个双亲委派的方式来完成类加载,但是双亲委派模型并不是一个强制的...

  • Java 类加载

    双亲委派模型 并非强制 而是推荐 SPI 父类加载器需要子类加载器加载类 打破双亲委派模型 https://www...

  • sandBox源码分析之ClassLoader

    提起classLoader,就不由自主想起了java classLoader的双亲委派模型,那么到底什么是双亲委派...

  • 双亲委派模型

    一、类加载器简介:JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构: Bootstrap ClassL...

  • 双亲委派模型

    一、为什么要用这种模型 保证相同的字节码文件不被重复加载 二、利用双亲委派模型加载类的过程 java.lang.C...

  • 双亲委派模型

    jdk1.2后 虚拟机 的类加载器 使用的就是双亲委派模型; 主要有三种加载器: 1:Bootstrap clas...

  • 双亲委派模型

    类与类加载器 类加载器非常重要,因为每个类加载器都有一个独立的类名称空间。比如我们要加载两个类,如果要比较两个类是...

  • 双亲委派模型

    为何需要双亲委派模型: 如果你自己重写一个String类, 会发生什么?两个字:安全 JVM运行流程, JVM基本...

网友评论

      本文标题:73.双亲委派模型

      本文链接:https://www.haomeiwen.com/subject/cqpkdktx.html