美文网首页
双亲委派机制

双亲委派机制

作者: 静水红阳 | 来源:发表于2022-07-01 15:17 被阅读0次

前言

Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将其class文件加载到内存生成class对象。Java虚拟机采用了双亲委派机制对class文件进行加载。

ClassLoader

JVM中提供了三层的ClassLoader:Bootstrap ClassLoader,ExtClassLoader,APPClassLoader。

  1. Bootstrap ClassLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。
  2. ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展jar。
  3. APPClassLoader:主要负责加载应用程序中的主函数类。

流程

简单说描述下双亲委派机制的流程:

  1. 如果一个类加载器收到了类加载请求,它并不会自己先加载,而是把这个请求委托给父类的加载器去执行。
  2. 如果父类加载器还存在父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的引导类加载器。
  3. 如果父类加载器可以完成类加载任务,就成功返回;如果父类加载器无法完成加载任务,子加载器才会去自己去加载。
  4. 父类加载器逐层向下分配任务,如果加载器能够加载,则加载类,如果家在任务分配至系统类加载器也无法加载此类,则抛出异常。
双亲委派机制.jpg

双亲委派机制的优势

  1. 可以避免类的重复加载
  2. 可以防止核心API被修改。举例来说,如果有人要使用自定义类String替换系统级别的类String,在双亲委派机制中是不可行的。这些系统类会首先逐层委托到Bootstrap ClassLoader时加载,而下面的自定义User ClassLoader就不会再有加载类的机会,避免了此种修改错误。

参考文章

相关文章

  • 从类加载开始的JVM学习

    目录 引言 java类加载流程 java类加载机制- 类加载原理- 双亲委派机制 Tomcat中双亲委派机制的应用...

  • SPI的ClassLoader问题

    问题 为什么说spi服务机制破坏了双亲委派模型? 双亲委派机制 启动类加载器(Bootstrap ClassLoa...

  • Tomcat类载入器

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

  • 双亲委派机制

    一级标题 从META-INF/services/java.sql.Driver文件得到实现类名字DriverACl...

  • 双亲委派机制

    为什么设计双亲委派机制:1.沙箱保护机制,保护jre包下的核心类不被其他加载器创建,只能由自己的引导类加载器创建2...

  • 双亲委派机制

  • 双亲委派机制

    来源:https://kaiwu.lagou.com/course/courseInfo.htm?courseId...

  • 双亲委派机制

    双亲委派机制定义:当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加...

  • 双亲委派机制

    前言 Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将其class文件加载到内...

  • 双亲委派机制

    说到双亲委派机制,首先你要了解,什么是类加载器,下面就先简单说一下类加载器,后面在对双亲委派机制进行了解。 一、类...

网友评论

      本文标题:双亲委派机制

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