双亲委派模型

作者: 夹胡碰 | 来源:发表于2021-02-28 00:34 被阅读0次

一、什么是双亲委派模型

1649605102.png
  • 约定:

双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父亲加载器(但是是使用组合实现的,并不是继承)。

  • 工作过程:

如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父亲加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需要的类时),子加载器才会尝试自己去完成加载。

二、各个加载器介绍

1、启动类加载器 Bootstrap Class Loader

c++语言实现,这个类加载器负责加载存放在<JAVA_HOME>\lib 目录,或者被-Xbootclasspath参数所指定的路径中存放的,而且是Java虚拟机能够识别的(按照文件名识别,如rt.jar、tools.jar,名字不符合的类库即使放在lib目录中也不会被加载)类库加载到虚拟机的内存中。

2、扩展类加载器 ExtClassLoader

这个类加载器实在类sun.misc.Laucher$ExtClassLoader中以Java代码的形式实现的。负责加载<JAVA_HOME>\lib\ext目录中,或者被java.ext.dirs系统变量所指定的路径中所有的类库。可以直接在程序中使用扩展类加载器来加载Class文件。

3、应用程序类加载器 Application Class Loader

这个类加载器由sun.misc.Launcher$AppClassLoader来实现。由于应用程序类加载器是ClassLoader类中的getSystem-ClassLoader()方法的返回值,所以有些场合中也称它为"系统类加载器"

三、双亲委派模型工作过程

四、双亲委派模型的意义

使java中的类随着它的类加载器一起具备了一种带有优先级的层次关系。

  1. 通过委派的方式,可以避免类的重复加载,当父加载器已经加载过某一个类时,子加载器就不会再重新加载这个类。
  2. 通过双亲委派的方式,还保证了安全性。因为Bootstrap ClassLoader在加载的时候,只会加载JAVA_HOME中的jar包里面的类,如java.lang.String,那么这个类是不会被随意替换的,除非有人跑到你的机器上,破坏你的JDK。那么,就可以避免有人自定义一个有破坏功能的java.lang.String被加载。这样可以有效的防止核心Java API被篡改。

参考

  1. 详谈双亲委派机制
  2. Java类加载器--手写一个String类能否被类加载器加载?

相关文章

  • 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/mgywfltx.html