JVM-类加载器的双亲委派模型详解

JVM中存在三个默认的类加载器:

  1. BootstrapClassLoader
  2. ExtClassLoader
  3. AppClassLoader

AppClassLoader的父加载器是ExtClassLoader,ExtClassLoader的父加载器是 BootstrapClassLoader。

它们之间的关系是:AppClassLoader->ExtClassLoader->BootstrapClassLoader
在加载类的时候,它们会采用层层递进,向上委派的方式进行加载

详细来说就是JVM在加载⼀个类时,会调用AppClassLoader的loadClass方法来加载这个类,不过在这个方法中,会先使用ExtClassLoader的loadClass方法来加载类,同样ExtClassLoader的loadClass方法法中会先使用 BootstrapClassLoader来加载类,如果BootstrapClassLoader加载到了就直接成功,如果 BootstrapClassLoader没有加载到,那么ExtClassLoader就会自己尝试加载该类,如果没有加载到,那么则会由AppClassLoader来加载这个类。

所以,双亲委派指得是,JVM在加载类时,会委派给Ext和Bootstrap进行加载,如果也没加载到才会最终由自己进行加载。

总结:类加载的方式层层递进,向上委派,先使用最上层也就是最中父类进行尝试加载,若可以加载则直接加载,否则由上到下再层层尝试加载,如果最后都加载不到,则使用自己的自定义类加载进行加载。

相关推荐
Nuopiane2 小时前
关于C#/Unity中单例的探讨
java·jvm·c#
win x2 小时前
JVM类加载及双亲委派模型
java·jvm
bug攻城狮3 小时前
Spring Boot应用内存占用分析与优化
java·jvm·spring boot·后端
今天你TLE了吗4 小时前
JVM学习笔记:第八章——执行引擎
java·jvm·笔记·后端·学习
七夜zippoe7 小时前
Docker容器化实战:核心概念、镜像制作与多阶段构建全解析
java·jvm·数据库·docker·oracle·容器化
今天你TLE了吗8 小时前
JVM学习笔记:第七章——对象实例化、内存布局&访问定位
java·jvm·笔记·学习
ren049188 小时前
JVM相关面试题
jvm
小马爱打代码8 小时前
SpringBoot + JVM 内存泄漏监控 + Heap Dump 自动采集:OOM 前自动预警并留存现场
jvm·spring boot·后端
Engineer邓祥浩8 小时前
JVM学习笔记(1) 总述
jvm·笔记·学习
予枫的编程笔记12 小时前
【面试专栏|JVM虚拟机】从Serial到ZGC,JVM垃圾收集器进化史
java·jvm·垃圾收集器·zgc·g1 gc·serial gc·cms gc