JVM 双亲委派模型

双亲委派模型(类加载机制中,最常考的问题)

主要是有个好名字

类加载第一个环节中,根据类的全限定类名(包名+类名)找到对应的.class 文件的过程

相比之下,围绕着.class 文件的格式解析校验..这些环节更重要的

JVM 中进行类加载操作需要依赖内部的模块."类加载器(class loader)"

JVM 自带了三种类加载器

Bootstrap ClassLoader 负责在 Java 的标准库中进行查找

ExtensionClassLoader 负责在 Java 的扩展库中进行查找(JDK 自己带的,但是不是标准约定的库)

ApplicationClassLoader 负责在Java 的第三方库/项目中进行查找

这三个类加载器之间,存在"父子关系"(不是父类子类,继承关系)

每个类加载器中有一个 parent 这样的属性,保存了自己的父亲是谁

假设要加载一个类,java.lang.String

假设要加载一个,com.baidu.Test(自己项目中的类)

双亲委派模型的目的

为了确保三个类加载的优先级

标准库优先加载,第三方库/当前项目类最后加载

比如自己写一个类,和标准库恰好重复了,java.lang.String 此时 JVM 保证加载的仍然是标准库的 String 而不是自己写的

双亲委派模型也是可以打破的

程序员在特定场景下,也可以实现自己的类加载器,自己实现的类加载器可以让他遵守,也可以不遵守

相关推荐
DKPT10 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
低客的黑调11 小时前
为你的项目选择一个适合的[垃圾收集器]
java·jvm·算法
xu_yule15 小时前
Linux_14(多线程)线程控制+C++多线程
java·开发语言·jvm
豆奶特浓616 小时前
Java面试生死局:谢飞机遭遇在线教育场景,从JVM、Spring Security到AI Agent,他能飞吗?
java·jvm·微服务·ai·面试·spring security·分布式事务
Boop_wu18 小时前
[Java EE] 多线程进阶(JUC)(2)
java·jvm·算法
3***312120 小时前
java进阶1——JVM
java·开发语言·jvm
打工人你好2 天前
如何设计更安全的 VIP 权限体系
java·jvm·安全
unclecss3 天前
把 Spring Boot 的启动时间从 3 秒打到 30 毫秒,内存砍掉 80%,让 Java 在 Serverless 时代横着走
java·jvm·spring boot·serverless·graalvm
q***2513 天前
java进阶1——JVM
java·开发语言·jvm
zlpzlpzyd3 天前
jvm 偏向锁禁用以及移除
jvm