当前位置: 首页 > news >正文

【JVM】双亲委派机制

       📝个人主页:五敷有你      

 🔥系列专栏:JVM

⛺️稳中求进,晒太阳

双亲委派机制

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

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

在Idea中测试下面的案例:

双亲委派机制:

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

问题

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

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

String类能否被覆盖?

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

 

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

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

面试

类的双亲委派机制是什么

  • 当一个类去加载某个类的时候,会自底向上查找是否加载过,如果加载过就直接返回,如果一直到最顶层的类加载器都没有加载过,再由顶向下进行加载。
  • 应用程序类加载器的父类加载器是拓展类加载器,扩展类加载器的父类是启动类加载器。
  • 双亲委派机制的好处有两点:
    • 第一:避免恶意代码替换JDK中的核心类库,比如:java.lang.String,确保核心类库的完整性和安全性。
    • 第二:避免一个类被重复加载
http://www.lryc.cn/news/302722.html

相关文章:

  • 分布式id实战
  • 深入了解 SOCKS5 代理、代理 IP 和 HTTP
  • 外包干了3个多月,技术退步明显。。。。
  • Unity之闪电侠大战蓝毒兽(简陋的战斗系统)
  • C# 菜鸟级别有关于redis的使用
  • AlexNet的出现推动深度学习的巨大发展
  • 2024面试offer收割宝典字节篇
  • 冒泡排序及其优化
  • 【医学大模型 补全主诉】BioGPT + LSTM 自动补全医院紧急部门主诉
  • HCIE-Datacom证书有效期多久?HCIE考试有哪些内容?
  • OpenCV中的边缘检测技术及实现
  • 机器学习基础(一)理解机器学习的本质
  • Eclipse - Makefile generation
  • Sora:新一代实时音视频通信框架
  • 龟兔赛跑算法
  • Yii2项目使用composer异常记录
  • 【蓝桥杯 2021】图像模糊
  • 【leetcode】贪心算法介绍
  • com.alibaba.fastjson.JSONException: toJSON error的原因
  • 华为配置旁挂二层组网直接转发示例
  • OLMo 以促进语言模型科学之名 —— OLMo Accelerating the Science of Language Models —— 全文翻译
  • 单例模式双端检测详解
  • 秦PLUS荣耀版7.98万元起震撼上市,拉开“电比油低”大幕
  • 学习总结19
  • rancher v2.8.1 如何成功注册已有 k8s 集群
  • Vue中$root的使用方法
  • redis 异步队列
  • SpringBoot + Nacos 实现动态化线程池
  • 《Docker极简教程》--Dockerfile--Dockerfile的基本语法
  • css中, grid-auto-rows: 怎样简写在grid:中