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

Java中类加载器及双亲委派机制原理

  类加载器是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术,由类加载器加载java中的类使其能够使用。类加载器分为以下几种

类加载器

    1.启动类加载器

        作用:加载Java中最核心的类

            由C++编写(jdk8及之前)。无法通过代码获得类加载器

            默认加载Java安装目录/jre/lib下的类文件,比如rt.jar,tools.jar,resources.jar等

    2.扩展类加载器 

            允许扩展Java中比较通用的类

            默认加载Java安装目录/jre/lib/ext下的类文件

    3.应用程序类加载器

            加载应用使用的类

            加载classpath下的类,自己编写和maven中的类都由这个类加载器加载

 双亲委派机制       

  Java虚拟机中有多个类加载器,双亲委派机制决定类由哪个加载器加载

  作用1.保证类加载的安全性。2.避免类重复加载

  执行流程

  1.要加载一个类A,先由底开始向上检查,如果检查到类A在该加载器中加载过,那么直接返回类实例

  2.如果检查到顶层发现类加载器都没有加载过,那么先由顶层的类加载器尝试加载,具体的方式为:判断类A是否应该由自己加载,如果不应该,则委派给下层继续尝试加载,直到检查到正确的类加载器加载类A

  3.后续如果再要创建一个类A实例,那么再次进行第一步,应该会在某个类加载器中检查到该类已经被加载过,进行返回

 加载具备继承关系的类时:

打破双亲委派机制 

        场景在一个服务中有两个应用,分别有一个全限定名相同的类,但是实现的功能不同,如果简单的进行加载,无法实现两个应用的该类实现不同的功能。这是由于类加载器根据全限定名判断该类有没有被加载过。

这个时候就要打破双亲委派机制,即创建一个类加载器继承ClassLoader,重写loadclass方法,用这个类加载器去加载对应的类,这样就可以实现分别加载。

只有 相同类加载器+相同类全限定名才会被认为是同一个类

http://www.lryc.cn/news/592582.html

相关文章:

  • 2023 年 3 月青少年软编等考 C 语言八级真题解析
  • Windows8.1安装哪个版本的vscode?
  • 基于华为openEuler系统安装DailyNotes个人笔记管理工具
  • HTML常见标签
  • 关于Mysql开启慢查询日志报错:13 - Permission denied的解决方案
  • 爬虫小知识(二)网页进行交互
  • 前端流式渲染流式SSR详解
  • 模板初阶和C++内存管理
  • 【软件重构】如何避免意外冗余
  • 高速公路自动化安全监测主要内容
  • A33-vstar报错记录:ERROR: build kernel Failed
  • 深入理解Linux文件I/O:系统调用与标志位应用
  • 广东省省考备考(第四十九天7.18)——判断推理:位置规律(听课后强化训练)
  • *SFT深度实践指南:从数据构建到模型部署的全流程解析
  • Linux | Bash 子字符串提取
  • Redis原理之哨兵机制(Sentinel)
  • Android性能优化之网络优化
  • 【锂电池剩余寿命预测】TCN时间卷积神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 如何用Python并发下载?深入解析concurrent.futures 与期物机制
  • 安卓Android项目 报错:系统找不到指定文件
  • python学智能算法(二十四)|SVM-最优化几何距离的理解
  • 【52】MFC入门到精通——MFC串口助手(二)---通信版(发送数据 、发送文件、数据转换、清空发送区、打开/关闭文件),附源码
  • 『 C++ 入门到放弃 』- set 和 map 容器
  • Java Web项目Dump文件分析指南
  • 开源Docmost知识库管理工具
  • spring-cloud微服务部署转单体部署-feign直连调用
  • Windows Server 版本之间有什么区别?
  • 在断网情况下,网线直接连接 Windows 笔记本和 Ubuntu 服务器进行数据传输
  • 华为业务变革项目IPD基本知识
  • 【HCI log】Google Pixel 手机抓取hci log