【JVM】双亲委派机制

📝个人主页:五敷有你

🔥系列专栏:JVM

⛺️ 稳中求进,晒太阳

双亲委派机制

在Java中如何使用代码的方式去主动加载一个类呢?

  • 方式1:使用Class.forName方法,使用当前类的类加载器去加载指定的类。
  • 方式2:获取到类加载器,通过类加载器的loadClass方法指定某个类加载器加载

在Idea中测试下面的案例:

双亲委派机制:

当一个类加载器接受到加载类的任务时,会自底向上查找是否加载过,在由顶向下进行加载

问题

如果一个类重复出现三各类加载器的加载位置,应该由谁来加载呢?

启动类加载器,根据双亲委派机制,它的优先级是最高的。

String类能否被覆盖?

不能,会返回启动类加载器在rt.jar包中的String类

  • 应用程序类加载器parent父类加载器是扩展类加载器,而扩展类加载器的parent是空,但是在代码逻辑上,扩展类加加载器依然会把启动类加载器当成父类加载器处理
  • 启动类加载器使用C++编写,没有父类加载器

使用arthas来看类加载器 classloader -t

面试

类的双亲委派机制是什么

  • 当一个类去加载某个类的时候,会自底向上查找是否加载过,如果加载过就直接返回,如果一直到最顶层的类加载器都没有加载过,再由顶向下进行加载。
  • 应用程序类加载器的父类加载器是拓展类加载器,扩展类加载器的父类是启动类加载器。
  • 双亲委派机制的好处有两点:
    • 第一:避免恶意代码替换JDK中的核心类库,比如:java.lang.String,确保核心类库的完整性和安全性。
    • 第二:避免一个类被重复加载
相关推荐
leisoo80977 小时前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
今天的砖头有点烫手啊14 小时前
JVM 调优实战:从 GC 日志到参数优化,一次完整排查
java·jvm
JAVA面经实录91717 小时前
MySQL问题定位与性能优化完整知识体系
java·jvm·数据库·mysql·性能优化
LCG元19 小时前
【实战】树莓派物联网开发:DHT11温湿度采集与MQTT云上报全流程
java·jvm·物联网
欢醉20 小时前
干货分享Gateway踩坑实录:Netty直接内存把网关吃垮了OutOfDirectMemoryError
jvm·springcloud
wuminyu2 天前
JDK21 FFM异步读取MSG_ZEROCOPY错误队列揭秘
java·linux·c语言·jvm·c++
YH55269842 天前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
2602_959960922 天前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题
wuminyu2 天前
JDK21中虚拟线程和FFM协同实现高并发源码剖析
java·linux·c语言·jvm·c++
SWAGGY..2 天前
【C++进阶】:(1)继承机制详解
java·jvm·c++