美文网首页
JAVA 双亲委派机制

JAVA 双亲委派机制

作者: 嗷嗷待哺丶 | 来源:发表于2021-10-29 10:44 被阅读0次

java语言中支持4种类加载器:

  1. Bootstrap ClassLoader 启动类加载器

  2. Extention ClassLoader 标准扩展类加载器

  3. Application ClassLoader 应用类加载器

  4. User ClassLoader 用户自定义类加载器

当一个类收到了一个类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载,只有父加载器无法加载的时候,才会由当前加载器去负责类的加载。

这四种类加载器,各有各的职责:

  • Bootstrap ClassLoader ,主要负责加载Java核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。

  • Extention ClassLoader,主要负责加载目录%JRE_HOME%\lib\ext目录下的jar包和class文件。

  • Application ClassLoader ,主要负责加载当前应用的classpath下的所有类

  • User ClassLoader , 用户自定义的类加载器,可加载指定路径的class文件

也就是说,一个用户自定义的类,如com.test.Test是无论如何也不会被Bootstrap和Extention加载器加载的。
通过委派的方式,可以避免类的重复加载,当父加载器已经加载过一个类的时候,子加载器不会再重新加载这个类。

而且通过双亲委派的方式,还保证了安全性,因为Bootstrap ClassLoader在加载的时候,只会加载JAVA_HOME中的jar包里面的类,如java.lang.Integer,这个类是不会被随意替换的,除非有人跑到你的机器上,破坏你的JDK。

实现双亲委派的代码就在java.lang.ClassLoader类的loadClass方法中,大概逻辑:

  1. 先检查类是否被加载过

  2. 如果没有加载则调用父加载器的loadClass方法进行加载

  3. 如果父加载器为空则默认使用启动类加载器(bootstrapclass loader)作为父加载器

  4. 如果父加载器加载失败,抛出ClassNotFoundException异常后,在调用自己的findClass方法进行加载。

相关文章

  • 从类加载开始的JVM学习

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

  • Tomcat类载入器

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

  • 简单了解什么是双亲委派机制?

    什么是双亲委派机制 了解双亲委派,需要先了解下JAVA的类加载器ClassLoader,java的类加载器主要有以...

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

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

  • JVM双亲委派机制

    什么是双亲委派机制? 要想搞明白什么是双亲委派机制就要先知道三个概念 1. 什么是类的加载? 将java代码通过类...

  • Java双亲委派机制

    什么是双亲委派机制 当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个...

  • Java双亲委派机制

    一.Java有4种类加载器 Bootstrap ClassLoader(启动类加载器):加载...

  • Java双亲委派机制

    类加载器bootstrp c++ 编写,开发者无法直接获取到启动类加载器的引用ext 如classpath中...

  • JAVA 双亲委派机制

    java语言中支持4种类加载器: Bootstrap ClassLoader 启动类加载器 Extention C...

  • 为什么说SPI打破双亲委派机制

    简单介绍ClassLoader的双亲委派机制: java类通过Classloader加载,Classloader之...

网友评论

      本文标题:JAVA 双亲委派机制

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