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进行加载,如果也没加载到才会最终由自己进行加载。

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

相关推荐
wangchunyu11415 小时前
JAVA JVM内存结构与运行时数据区
java·开发语言·jvm
骑着蜗牛撵大象32718 小时前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
lambo mercy20 小时前
持久化01——线程级持久化
java·开发语言·jvm
Pniubi21 小时前
JVM的构成精讲
jvm
今天的砖头有点烫手啊2 天前
Java 对象内存布局:压缩指针、对齐填充与 JOL 实测
java·jvm
凯凯姜2 天前
JVM 内存持续增长与 Full GC 频繁
jvm
驭渊的小故事2 天前
从 JVM 底层看泛型:泛型擦除、Signature 属性与 Super Type Token 模式
java·开发语言·jvm
香蕉大香蕉(06敬畏市场)3 天前
高频八股 · Java 并发编程(10):异步、ThreadLocal 与虚拟线程(收官)
java·开发语言·网络·jvm·python·ai·实习
wuminyu3 天前
JVM规范学习总结-Class文件结构
java·linux·c语言·jvm·c++
酌沧4 天前
MemT让记忆成为模型内生能力
jvm·人工智能·算法