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

分布式微服务系统架构第106集:jt808,补充类加载器

加群联系作者vx:xiaoda0423

仓库地址:https://webvueblog.github.io/JavaPlusDoc/

https://1024bat.cn/

类加载器

类与类加载器

判断类是否“相等”

任意一个类,都由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都有一个独立的类名称空间。

因此,比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个 Class 文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那么这两个类就必定不相等。

这里的“相等”,包括代表类的 Class 对象的 equals() 方法、isInstance() 方法的返回结果,也包括使用 instanceof 关键字做对象所属关系判定等情况。

加载器种类

系统提供了 3 种类加载器:

  • 启动类加载器(Bootstrap ClassLoader): 负责将存放在 <JAVA_HOME>\lib 目录中的,并且能被虚拟机识别的(仅按照文件名识别,如 rt.jar,名字不符合的类库即使放在 lib 目录中也不会被加载)类库加载到虚拟机内存中。

  • 扩展类加载器(Extension ClassLoader): 负责加载 <JAVA_HOME>\lib\ext 目录中的所有类库,开发者可以直接使用扩展类加载器。

  • 应用程序类加载器(Application ClassLoader): 由于这个类加载器是 ClassLoader 中的 getSystemClassLoader() 方法的返回值,所以一般也称它为“系统类加载器”。它负责加载用户类路径(classpath)上所指定的类库,开发者可以直接使用这个类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。


ClassLoader

当然,如果有必要,还可以加入自己定义的类加载器。

双亲委派模型

什么是双亲委派模型

双亲委派模型是描述类加载器之间的层次关系。它要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。(父子关系一般不会以继承的关系实现,而是以组合关系来复用父加载器的代码)

工作过程

如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(找不到所需的类)时,子加载器才会尝试自己去加载。

在 java.lang.ClassLoader 中的 loadClass 方法中实现该过程。

为什么使用双亲委派模型

像 java.lang.Object 这些存放在 rt.jar 中的类,无论使用哪个类加载器加载,最终都会委派给最顶端的启动类加载器加载,从而使得不同加载器加载的 Object 类都是同一个。

相反,如果没有使用双亲委派模型,由各个类加载器自行去加载的话,如果用户自己编写了一个称为 java.lang.Object 的类,并放在 classpath 下,那么系统将会出现多个不同的 Object 类,Java 类型体系中最基础的行为也就无法保证。

平台通用应答

消息ID: 0x8001

消息体:每个不同的命令消息体格式内容由各命令确定

相关文章:

  • 车载软件架构 ---单个ECU的AUTOSAR开发流程
  • 如何通过技术手段降低开发成本
  • c语言jni实战,双系统
  • springboot和springcloud的区别
  • 【Linux】Linux下的gcc/g++编译器与动静态库
  • #3 物联网 的标准
  • 巴法云平台-TCP设备云-微信小程序实时接收显示数据-原理
  • 生态环境影响评价技术体系构建与图件智能化实现‌‌—以内蒙古风电场建设项目为例
  • MySQL ROUND(number, decimals)
  • 访问不到服务器上启动的llamafactory-cli webui
  • 使用命令打开电脑的[服务]窗口
  • 微任务(Microtasks)与宏任务(Macrotasks)详解
  • 几何建模基础-拓扑命名实现及优化
  • 关于IDEA中使用ctrl跳转源码出现???的解决方案
  • OpenCV图像增强实战教程:从理论到代码实现
  • 约翰·麦卡锡:我的人工智能之梦
  • Linux中的线程
  • 小刚说C语言刷题——每日一题东方博宜1000熟悉OJ环境
  • VS 基于git工程编译版本自动添加版本号
  • 【网络安全】通过 JS 寻找接口实现权限突破
  • 外汇局:4月以来外汇市场交易保持平稳,跨境资金延续净流入
  • 中央民族乐团团长赵聪已任文旅部艺术司司长
  • 泽连斯基:俄军违反停火承诺,20日10时起前线俄炮击增加
  • 9厘米,25克!最小最轻的无线陆空两栖机器人来了
  • 合肥打造全球首个无人艇超级工厂,请看《浪尖周报》第21期
  • 玉渊谭天丨先爆视频再爆订单,美关税影响下企业因短视频火出圈