美文网首页
JVM类加载器和双亲委派机制

JVM类加载器和双亲委派机制

作者: Margolu | 来源:发表于2022-01-14 10:44 被阅读0次

什么是类加载器

类加载阶段中,“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放在java虚拟机外部去实现,以便让应用程序自己决定如何获取所需的类。实现这个动作的代码被称作“类加载器”。

Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分,负责动态的将Java类加载到Java虚拟机的内存空间。

类加载器有哪些

主要有三个:

启动类加载器(Bootstrap ClassLoader):加载Java的核心库(jre/lib/rt.jar),同时加载另外两种类加载器,由C++编写;扩展类加载器(Extensions ClassLoader):加载Java的扩展库(jre/ext/*.jar);应用程序类加载器(Application ClassLoader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。除了上面三种外,我们还可以自定义类加载器,以方便我们的开发。

类加载器之间的关系

双亲委派模型

类加载器之间的层次关系被称为类加载器的双亲委派模型。该模型要求除了顶层的启动类加载器外,其余的类加载器都应该有自己的父类加载器,而这种父子关系一般通过组合(Composition)关系来实现。

双亲委派机制

如果一个类加载器收到了类加载的请求

1.首先判断被加载的类是否已经加载过,如果是则结束,否则会将加载任务委托给自己的父亲;

2.父类加载器在收到类加载的请求时,也会先判断被加载的类是否已经加载过,如果是则结束,否则同样将加载任务委托给自己的父亲

3.不断的循环进行步骤2,直到将加载任务委托给Bootstrap ClassLoader为止。此时,Bootstrap ClassLoader会先判断被加载的类是否已经加载过,如果是则结束;请注意,到这里为止,都只是在转移加载任务的请求,下面将会进行类加载。

4.Bootstrap ClassLoader会判断能否完成加载任务,如果能则直接加载,否则会将加载任务交给儿子类加载器;

5.儿子类加载器也会判断能否完成加载任务,如果能则直接加载,否则会再一次将加载任务交给儿子类加载器;

6.不断的循环进行步骤5,直到最后一个类加载器,如果这个类加载器仍然不能够加载这个类,就会抛出一个异常:ClassNotFoundException。

双亲委派机制的好处

1.首先,保证了java核心库的安全性。如果你也写了一个java.lang.String类,那么JVM只会按照上面的顺序加载jdk自带的String类,而不是你写的String类。

2.其次,还能保证同一个类不会被加载多次。

相关文章

  • JAVA类加载机制

    jvm之java类加载机制和类加载器(ClassLoader)的详解java类加载机制:全盘负责、双亲委派、缓存机...

  • Java虚拟机

    JVM 组成部分 类加载器 执行引擎 内存区 本地方法调用 类加载器 双亲委派模型 类的加载过程采用双亲委派机制,...

  • java类的加载机制

    概念 类的生命周期 类加载器 jvm类加载机制 类的加载方式 双亲委派模式

  • JVM——类加载机制

    前言 今天就来介绍类的加载机制以及双亲委派机制。 JVM 类加载机制 JVM 类加载的五个阶段 JVM 类加载机制...

  • Java面试 常见jvm相关问题的解答

    1.什么是类加载器?类加载器有哪些?描述一下 JVM 加载 Class 文件的原理机制?类加载器双亲委派模型机制?...

  • 关于Java类加载双亲委派机制的思考(附面试题)

    预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实...

  • 四、初识ClassLoader

    双亲委派的定义 类加载器的父亲委托机制(双亲委派机制) 类加载器加载一个类时,会优先交给其父的加载器加载,父加载器...

  • 为什么使用双亲委派机制?

    为什么使用双亲委派机制? 专业名词 说双亲委派机制就不得不说类加载器。 引导类加载器:加载%JAVA_HOME%/...

  • 3.手写自己的java类加载器

    类的加载过程?何为双亲委派机制?为啥这么设计?实现一个自己的类加载器?如何打破双亲委派机制? 1.类加载器 jar...

  • 双亲委派

    JVM在加载类时默认采用的是双亲委派机制。 某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器...

网友评论

      本文标题:JVM类加载器和双亲委派机制

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