java虚拟机中的双亲委派机制

news/2024/5/18 3:43:53/文章来源:https://blog.csdn.net/perturb/article/details/127209268

文章目录

      • 双亲委派机制
        • 工作原理
        • 工作场景
        • 调用过程
          • 三种加载器调用范围
          • String类加载过程
          • StringTest类加载过程
        • 双亲委派机制优点

双亲委派机制

Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。

工作原理

1)如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;

2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归请求最终将到达顶层的启动类加载器

3)如果父类加载器可以完 成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式

工作场景

手动新建一个类String并将其包名改为java.lang,请问我们新建一个String对象时会调用自定义类吗

image-20220821194818028

按照安全性而言是不应该调用的,否则我们往一个做好的系统里面声明这样一个类就会毁坏整个系统,而事实上java也确实不会调用这个类,所我们在这里新建一个测试类StringTest并新建一个String对象看看自定义的String类会不会输出自定义String类中的静态语句

image-20220821195009367

调用过程

String类加载与StringTerst类加载过程是不同的,因为String类的位置处在java.lang(jdk定义的)文件下,所以由引导类加载器处理,当引导类加载器处理后就不会给系统类加载器处理了,所以也不会调用我们自定义的类;

而StringTerst类由系统类加载器处理

三种加载器调用范围

image-20220821200214046

String类加载过程
image-20220821200108015
StringTest类加载过程
image-20220821200511579

所以执行我们自定义String类中的main方法时会报错,因为由引用类加载器加载出来的String类中是没有关于main方法的定义的

image-20220821200939216

双亲委派机制优点

避免类的重复加载

保护程序安全,防止核心API被随意篡改

自定义类:java. lang.string(已存在)

自定义类:java.lang.shkstart(报错,不允许在java.lang中新加自定义的类)

image-20220821202029825

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_20201.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些有趣的小项目合集~

pyqt人脸识别: nullhttps://www.jb51.net/article/168718.htmpyqt目标检测: 利用PyQt5为目标检测Faster-rcnn-Pytorch添加GUI界面(二)-python黑洞网 (pythonheidong.com)https://www.pythonheidong.com/blog/article/337144/e2d…

最常见的IMU:MPU6050

I2CI^2CI2C通讯 ​ I2CI^2CI2C is a two-wire interface comprised of the signals serial data (SDA) and serial clock (SCL). In general, the lines are open-drain and bi-directional. In a generalized I-C interface implementation, attached devices can be a maste…

优雅的处理参数校验以及异常

1、前言 编写控制层时,我们可能会自己去校验请求参数,就会出现这样的代码: if (StringUtils.isEmpty(memberSid)) {return new JsonResult(false, "参数memberSid为空"); } if (null test) {return new JsonResult(false, "…

油溶性PbS量子点近红外发射光PL800nm-1600nm

油溶性PbS量子点近红外发射光PL800nm-1600nm 油溶性PbS量子点产品,表面由疏水配体包覆,平均的量子产率为50%,储存时应避免阳光直射,4度密封暗处保存,可以为客户订制生产800nm~1600nm任一波长不同克数的产品…

叶毓睿:元宇宙发展与治理中,治理的主体是谁?治理的对象是谁?

中国移联元宇宙产业委员会联席秘书长、《元宇宙十大技术》著者之一、高效能服务器和存储技术国家重点实验室首席研究员叶毓睿:治理之可能性的关键在于延续性和开创性。 2022年9月24日,元宇宙产业委特别筹备的“发展与治理”2022元宇宙共治大会暨《元宇宙…

【JT-1/2电子式同步检查继电器】

1 用途 JT-1型同步检查继电器用于两端供电线路的自动重合闸线路中,其作用在于检查线路上电压的存在及线路上和变电站汇流排上电压向量间的相角差。 2 结构和原理 2.1 本继电器采用嵌入式安装,其主体部分系插拔式结构 2.2 本继电器主体部分与DT-1型同…

【Python基础面向对象】self、类变量和实例变量、__init__

哈喽兄弟们,我们接着上篇继续学习面向对象。 面向对象化编程所有的实例对象和实例方法都必须以self作为第一个参数,文章内容接上一章:Python面向对象编程基础之面向对象思想和特点、类和对象。这个系列将会很详细的解释清楚Python面向对象编程…

java实现多层级目录树详解

一,引言 在开发中,经常遇到前端需要实现一个多层级的目录树,那么后端就需要根据这种结构返回对应的数据,因此在这里记录一下本人在开发中是如何实现这个多层级的目录树。 二,建表建库 在建表时,需要注意…

(附源码)计算机毕业设计SSM悠哈出租车管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

模拟IC设计到底怎么学?给初学者一点建议

想必大家都知道,模拟IC设计非常难学。就拿最普遍的晶体管来说,我们分析它的时候必须首先分析直流偏置,其次在分析交流输出电压。可以说,这是一项相当复杂的工作。有些朋友一直吐槽模拟IC设计真的非常难学,那么到底该怎…

SWAT模型 建模方法、实例应用、高级进阶

目录 第一部分:【建模及实践】SWAT模型在水文水资源、面源污染模拟中的实践技术应用及典型案例分析 第二部分:【高级进阶】SWAT模型高阶应用暨无资料地区建模、不确定分析与气候变化、土地利用对面源污染影响模型改进及案例分析 基于ArcGIS的SWAT模型是…

yolov5-6.1的完全使用手册,含模型训练测试(可训练自己的数据集)

安装yolov5 安装命令如下下所示,包含了下载yolov5-6.1,及相关包安装命令。yolov5项目目前已经更新到6.2,支持对图像数据的分类,但使用较为麻烦,因此仅以6.1为例进行说明。安装yolov5后,切记不要安装wandb&…

条件区域循环的Sumif

问题:Sumif条件为D12:D16,求和区域从E3:E8向右,条件区域为B3:D8三列循环 函数解决:=SUMIF(OFFSET($B$3:$B$8,,MOD(COLUMN(C1),3)),$D12,E$3:E$8) 思路: 利用Mod(Column(C1),3),右拉生成0、1、2、0、1、2……这样的循环数 利用Offset,从B3:B8起,右拉生成向右偏移0、1、…

国民技术MCU之串口烧录

国民技术MCU串口烧录 前言 在我们使用国民技术单片机的时候,一般是用JLink SWD来烧录调试固件。 但是在某些情况下,比如需要刷写固件的现场没有JLink工具,采用批量生产、或者MCU在程序上电后SWD功能没有正常运行(变砖&#xff0…

数据库概述06(视图)

视图 常见的数据库对象 表TABLE 表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录 数据字典 就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改&#xf…

一些有关多线程的‘‘八股文‘‘?!

目录 一. 常见的锁策略: 二. CAS 三.synchronized原理 四. HashTable, HashMap, ConcurrentHashMap 之间的区别: 五. 死锁的成因, 和解决方案: 一. 常见的锁策略: 1.乐观锁 vs 悲观锁: 描述的是两种不同的加锁态度 乐观:预测锁冲突概率不高,因此做的工…

2022年NPDP新版教材知识集锦--【第一章节】(2)

【制定战略的工具】 SWOT分析:由四个英文单词的首字母组合而成,分别是优势(Strengths)、劣势(Weaknesses)、机会(Opportunities)和威胁(Threats)。 ⚫优势:某企业或项目优于其他企业或项目的特点。 ⚫劣势:某企业或项目不如其他…

python学习笔记:numpy库,使用matpotlib库绘图

目录 一.Numpy库 1.什么是numpy? 2.Numpy数组和原生Python array数组之间的区别 3.Numpy数组 ​编辑 4.numpy数组的运算 5.numpy的索引,切片 二.matplotlib 1.绘制直线 2.绘制曲线 3.散点图绘制 4.多界面绘制 5.柱形图绘制 6.3D图形绘制 一.Numpy库 1.…

数据库与MPP数仓(三十):pigsty部署

pigsty是pg的开箱即用版本,提供完善监控和高可用功能,高质量的国产开源工程,监控面板非常详尽,保姆级别的文档; 参考:腾讯云VPC部署 | Pigsty 参考:Releases Vonng/pigsty GitHub pigsty源码基本上都是使用ansible的playbook编写,使用ansible同时配置多台机器,在角…

基于Ubuntu20.04安装Nvidia驱动、Cuda和CudNN

基于Ubuntu20.04安装Nvidia驱动、Cuda和CudNN 前言 nvidia驱动,cuda,cudnn三者关系 1 nvidia驱动 1.1 nvidia驱动安装 首先Nvidia驱动应该是最好理解的,它就是GPU显卡的软件驱动程序,和计算机其他的硬件驱动一样。Nvidia官网提…