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 而不是自己写的

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

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

相关推荐
心勤则明19 小时前
JVM(Java虚拟机)运行时数据区
java·jvm·chrome
gogogo出发啦1 天前
JVM快速入门
linux·运维·jvm
虎鲸不是鱼1 天前
记一次借助Eclipse MAT排查OOM
java·jvm·ide·eclipse·gc
遗憾皆是温柔2 天前
3.JVM,JRE和JDK的关系是什么
java·开发语言·jvm·面试
熬夜学习。2 天前
JVM相关知识
jvm
hqxstudying2 天前
Java开发时出现的问题---语言特性与基础机制陷阱
java·jvm·python
极光雨雨2 天前
JVM中年轻代、老年代、永久代(或元空间)、Eden区和Survivor区概念介绍
java·jvm
麦兜*4 天前
Spring Boot 整合量子密钥分发(QKD)实验方案
java·jvm·spring boot·后端·spring·spring cloud·maven
崎岖Qiu4 天前
【JVM篇13】:兼顾吞吐量和低停顿的G1垃圾回收器
java·jvm·后端·面试
-Xie-4 天前
JVM学习日记(十三)Day13
jvm·学习