美文网首页
双亲委派模型

双亲委派模型

作者: 我是一名搬运工 | 来源:发表于2019-06-17 14:49 被阅读0次

每个类都是通过ClassLoader加载到JVM当中的。ClassLoader包括三类,分别是:

Bootstrap ClassLoader:用于加载JAVA_HOME\lib下面的jar包里的类;

Extension ClassLoader:用于加载JAVA_HOME\lib\ext下面的jar包里的类;

Application ClassLoader:用于加载其它的类。

自定义ClassLoader,继承自Application ClassLoader,Application ClassLoader实现了双亲委派模型,双亲委派模型的意思就是:如果一个类加载器收到一个加载类的请求,它会先委派给父类的加载器去加载这个类,如果父类加载器找不到这个类,它才会自己加载。

自定义ClassLoader的原理就是重写findClass这个方法,在findClass中:

1)首先,通过参数中的类全限定名称,把这个类的.class文件读进来,转成字节数组;

2)然后,通过Application ClassLoader当中defindClass方法,把这个字节数组转成对象。

对于任意一个类,都需要由加载他的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类命名空间。这句话可以表达的更通俗一些:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来自同一个Class文件,被同一个虚拟机加载,只要加载他们的类加载器不同,那这个两个类就必定不相等。

唯一确定一个类是通过他的类加载器和全限定名。

通过线程上下文类加载器(Thread Context ClassLoader)可以打破双亲委派模型,让父类加载器加载子类加载器的类。

相关文章

  • 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基本...

  • 双亲委派模型

    首先说一说什么是类和类加载器 1.类(Class) 我们在编写代码时,创建的每个“*.java”文件都可以认为是一...

网友评论

      本文标题:双亲委派模型

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