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

JVM双亲委派机制原理

JVM的双亲委派机制是Java类加载器的一个核心特性,它主要解决了类加载过程中类由谁来加载的问题。以下是双亲委派机制的工作原理和它存在的原因:
工作原理
1.  层次结构:Java类加载器被组织成一个层次结构,通常包括三个层次:启动类加载器(Bootstrap Class Loader)、扩展类加载器(Extension Class Loader)和应用程序类加载器(Application Class Loader)。这些加载器之间存在父子关系,构成了一颗树状结构。
2.  加载类请求:当程序需要加载一个类时,当前类加载器首先会检查自己是否已经加载过这个类。如果已加载,它会返回该类的引用。
3.  委派给父加载器:如果当前类加载器没有加载过这个类,它会将加载请求委派给其父加载器。
4.  自上而下的委派:当一个类加载器接收到类加载请求时,它不会立即去尝试加载这个类,而是先将请求委派给它的父类加载器,一直递归到最顶层的根加载器(Bootstrap ClassLoader)。如果父加载器能够找到这个类,就会由父加载器进行加载;否则,当前加载器才会尝试自己加载。
5.  避免重复加载:通过这种委派方式,确保了Java类的加载过程是自上而下的,并且优先由高层次的加载器加载,避免了多个类加载器重复加载相同的类。
存在的原因
1.  避免类的重复加载:双亲委派机制确保了Java类只会由同一个类加载器加载一次,避免了重复加载。比如核心类库中的java.lang.String类,在JVM中应该是唯一的。
2.  安全性:防止开发者自定义加载的类替代Java核心类库。例如,防止用户自定义一个java.lang.Object类。如果没有双亲委派机制,开发者可以通过自定义类加载器加载这样的类,从而导致系统的不稳定和潜在的安全隐患。
3.  维护类的唯一性和一致性:双亲委派模型确保了类的唯一性,因为一个类只会被加载一次。这有助于维持类加载的一致性,确保在不同的类加载器层次结构中使用的类是同一个版本,避免了类冲突。
通过这种机制,JVM确保了Java程序的稳定性和安全性,同时也支持了类的唯一性和一致性。

 


http://www.kler.cn/a/417826.html

相关文章:

  • 蓝桥杯第 23 场 小白入门赛
  • 【Python爬虫五十个小案例】爬取猫眼电影Top100
  • C#中switch语句使用
  • Python小白语法基础18(文件操作)
  • TiDB 调度概述
  • Ardusub源码剖析(1)——AP_Arming_Sub
  • 图像显示的是矩阵的行和列,修改为坐标范围。
  • windows C#-语句
  • HarmonyOS4+NEXT星河版入门与项目实战(25)------UIAbility启动模式(文档编辑案例)
  • SpringMVC-08-json
  • 1.1 数据结构的基本概念
  • (免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发
  • LLM学习笔记(9)Transformers 库与 pipeline() 函数(中)
  • 开源用户体验调查管理平台Formbricks
  • Easyexcel(7-自定义样式)
  • Linux高阶——1124—
  • 基于树莓派的安保巡逻机器人--项目介绍
  • JVM之Synthetic
  • 算法编程题-合并石头的最低成本
  • 七、传统循环神经网络(RNN)
  • PAT甲级-1143 Lowest Common Ancestor
  • 世界灌溉科技大会全球推广之旅,邀约美国、澳大利亚、土耳其等30余国采购商携千万资金到场采购
  • day21 链表
  • 免费搭建一个属于自己的个性化博客(Hexo+Fluid+Github)
  • Rk3588 onnx转rknn,出现 No module named ‘rknn‘
  • 【大数据学习 | 面经】HDFS的三副本机制和编码机制