JVM类加载器的分类以及双亲委派机制

news2024/12/23 7:22:59

目录

前言

1. 类加载器的分类:

1.1 启动类加载器(Bootstrap ClassLoader):

1.2 扩展类加载器(Extension ClassLoader):

1.3 应用程序类加载器(Application ClassLoader):

1.4 自定义类加载器:

2. 双亲委派机制:

我的其他博客


前言

Java虚拟机(JVM)的类加载器(ClassLoader)负责将类的字节码加载到内存中,并将其转换为运行时的类。类加载器在Java中有不同的分类,而双亲委派机制是一种类加载器之间的协作机制,用于保证类的唯一性和安全性。

 

1. 类加载器的分类:

1.1 启动类加载器(Bootstrap ClassLoader):

这是Java虚拟机的一部分,用于加载Java的核心类库,如java.lang包中的类。它是JVM的一部分,通常用本地代码来实现,不是Java类。

1.2 扩展类加载器(Extension ClassLoader):

负责加载Java的扩展类库,位于java.ext.dirs系统属性所指定的目录中。通常是<JAVA_HOME>/lib/ext目录。

1.3 应用程序类加载器(Application ClassLoader):

也被称为系统类加载器,负责加载应用程序classpath下的类。它是ClassLoader类的子类,通常由Java虚拟机的实例化进程实例化。

1.4 自定义类加载器:

开发者可以通过继承ClassLoader类来自定义类加载器,实现自己的加载逻辑。这样的类加载器被称为用户自定义类加载器。

2. 双亲委派机制:

双亲委派机制是一种层次化的类加载器结构,保证类的唯一性和安全性。当一个类加载器收到加载类的请求时,它首先会检查这个类是否已经被加载过,如果已经加载过,就直接返回该类的Class对象;如果未加载过,它会将请求委派给父类加载器去加载,一直向上委派,直到到达启动类加载器。

工作流程如下:

  1. 当一个类加载器收到加载类的请求时,先检查该类是否已经加载。
  2. 如果已加载,直接返回Class对象。
  3. 如果未加载,将加载请求委派给父类加载器。
  4. 父类加载器按照同样的方式继续检查,直到到达启动类加载器。
  5. 如果启动类加载器无法加载该类,子类加载器尝试自己加载类。
  6. 如果子类加载器加载成功,返回Class对象;如果失败,报ClassNotFoundException。

这种机制的好处是避免了重复加载,确保类的唯一性,同时也提高了安全性,防止恶意类的加载。

自定义类加载器时,通常需要重写findClass方法来实现自己的加载逻辑,同时可以选择是否破坏双亲委派机制。

我的其他博客

Git命令大全:从基础到高级应用-CSDN博客

简单介绍一些其他的树-CSDN博客

什么是tomcat?tomcat是干什么用的?-CSDN博客

TCP/IP 四层体系结构-CSDN博客

Redis新数据类型-Bitmaps-CSDN博客

腾讯-轻量应用服务器centos7中宝塔安装MySQL8.0出现内存不足-CSDN博客Synchronized 优化-CSDN博客腾讯-轻量应用服务器centos7中宝塔安装MySQL8.0出现内存不足-CSDN博客

【计算机网络】URL概念及组成-CSDN博客

【计算机网络】TCP socket编程-CSDN博客

枚举类的final修饰-CSDN博客

什么是RabbitMQ-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款提高嵌入式代码质量的工具

我们通常认为&#xff0c;在中断中&#xff0c;不能执行耗时的操作&#xff0c;否则会影响系统的稳定性&#xff0c;尤其对于嵌入式编程。 ​ 对于带操作系统的程序而言&#xff0c;可以通过操作系统的调度&#xff0c;将中断处理分成两个部分&#xff0c;耗时的操作可以放到线…

当心这30个重要漏洞!微软发布12月补丁日安全通告

近日&#xff0c;亚信安全CERT监测到微软12月补丁日发布了34个漏洞的安全补丁&#xff08;不包含此前发布的Microsoft Edge等安全更新&#xff09;&#xff0c;其中&#xff0c;4个被评为紧急&#xff0c;30个被评为重要。包含10个权限提升漏洞&#xff0c;8个远程代码执行漏洞…

cat EOF快速创建一个文件,并写入内容

在linux系统中&#xff0c;如果你有这个需求 vi一个文件 /etc/docker/daemon.json 在这个文件中写入内容 { "registry-mirrors": ["https://iw3lcsa3.mirror.aliyuncs.com","http://10.1.8.151:8082"],"insecure-registries":[&quo…

fastadmin表格无刷新行内编辑(列表点击字段编辑)

功能介绍 此插件是一款基于x-editable实现的表格无刷新行内编辑功能的插件。 使用方法 首先我们需要在我们当前的控制器所对应的JS文件头部添加依赖,追加一个editable,如下: define([jquery, bootstrap, backend, table, form,

深入理解 hash 和 history:网页导航的基础(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【基础篇】1.1 认识STM32(二)

3.3 VREF/VREF-引脚 VREF和VREF-是STM32中用于提供参考电压的引脚。如下图&#xff1a; VREF引脚可以连接一个单独的外部参考电压&#xff0c;范围在2.0V&#xff5e;VDDA&#xff0c;但不能超过VDDA&#xff0c;否则就超过了模拟器件的最大供电电压。在100引脚的封装中&#…

西工大网络空间安全学院计算机网络实验五——ACL配置

实验五、ACL配置 一. 实验目的 1. 掌握ACL的基本配置方法 二. 实验内容 1. 基于如下图所示的拓扑图&#xff0c;对路由器进行正确的RIP协议配置&#xff1b; ​ 首先引入3台2811 IOS15型号的路由器、3台2950-T24型号的交换机、4台PC-PT型号的PC机、两台Server-PT型号的服务…

深圳锐科达IP网络广播系统

深圳锐科达IP网络广播系统 网络音频广播系统是一种基于TCP/IP网络的纯数字音频广播系统。该网络音频广播系统在物理结构上与标准IP网络完全集成。它不仅真正实现了基于TCP/IP网络的数字音频的广播、直播和点播&#xff0c;而且利用TCP/IP网络的优势&#xff0c;突破了传统模拟广…

Goldstein枝切法对存在间断相位缺陷的解缠研究

摘要: Goldstein枝切法作为相位解缠中路径积分法的重要算法之一&#xff0c;其解缠结果易受到噪声或间断相位缺陷所引起的残差点影响。为了研究相位间断缺陷对解缠算法的影响&#xff0c;模拟了具有间断相位缺陷的数据&#xff0c;采用 Gold-stein枝切法进行了系统的解缠研究。…

二百一十五、Flume——Flume拓扑结构之复制和多路复用的开发案例(亲测,附截图)

一、目的 对于Flume的复制和多路复用拓扑结构&#xff0c;进行一个小的开发测试 二、复制和多路复用拓扑结构 &#xff08;一&#xff09;结构含义 Flume 支持将事件流向一个或者多个目的地。 &#xff08;二&#xff09;结构特征 这种模式可以将相同数据复制到多个channe…

C语言的system函数简介

函数原型 包含在头文件 “stdlib.h” 中 int system(const char * command) 函数功能 执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令&#xff0c;参数字符串command为命令名。另&#xff0c;在windows系统下参数字符串不区分大小写。 说明&#xff1a;在windows系统中&…

机器翻译:跨越语言边界的智能大使

导言 机器翻译作为人工智能领域的瑰宝&#xff0c;正在以前所未有的速度和精度&#xff0c;为全球沟通拓展新的可能性。本文将深入研究机器翻译的技术原理、应用场景以及对语言交流未来的影响。 1. 简介 机器翻译是一项致力于通过计算机自动将一种语言的文本翻译成另一种语言的…

Apache Struts 代码执行漏洞风险通告

最近&#xff0c;亚信安全CERT通过监控发现&#xff0c;Apache官方披露了Apache Struts 代码执行漏洞&#xff08;CVE-2023-50164&#xff09;。攻击者可以利用文件上传参数进行路径遍历&#xff0c;并在某些情况下上传恶意文件&#xff0c;从而执行任意代码。 Apache Struts 是…

Notion开源平替知识库软件AFFiNE本地部署与公网访问远程协作

文章目录 前言1. 使用Docker安装AFFINE2. 安装cpolar内网穿透工具3. 配置AFFINE公网访问地址4. 实现公网远程访问AFFINE5. 结语 前言 本篇文章讲解Notion开源平替全能知识库工具AFFINE如何本地部署&#xff0c;并实现公网远程访问。AFFiNE 是一个全新的开源项目&#xff0c;旨…

【Hive】——CLI客户端(bin/beeline,bin/hive)

1 HiveServer、HiveServer2 2 bin/hive 、bin/beeline 区别 3 bin/hive 客户端 hive-site.xml 配置远程 MateStore 地址 XML <?xml version"1.0" encoding"UTF-8" standalone"no"?> <?xml-stylesheet type"text/xsl" hre…

(c语言)计算一个数的每位之和(递归实现)

#include<stdio.h> int DigitSum(int x) {int sum 0, g0;if(x>0){g x % 10;sum g;return sumDigitSum(x/10);}return 0; } int main() {int x;printf("请输入需要计算的数\n");scanf("%d",&x);int yDigitSum(x);printf("%d",y);…

uniapp播放 m3u8格式视频 兼容pc和移动端

支持全自动播放、设置参数 自己摸索出来的,花了一天时间,给点订阅支持下,订阅后,不懂的地方可以私聊我。 代码实现 代码实现 1.安装dplayer组件 npm i dplayer2. static/index.html下引入 hls 引入hls.min.js 可以存放在static项目hls下面<script src="/static…

软件设计师——信息安全(二)

&#x1f4d1;前言 本文主要是【信息安全】——软件设计师——信息安全的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

Linux NAPI ------------- epoll边缘触发模式

Linux处理网络数据包的一般流程 分组到达内核的时间是不可预测的。所有现代的设备驱动程序都使用中断来通知内核有分组到达。 网络驱动程序对特定于设备的中断设置了一个处理例程&#xff0c;因此每当该中断被引发时&#xff08;即分组到达&#xff09;&#xff0c;内核都调用…

指数分布的随机变量

如果连续型随机变量的概率密度满足如下条件&#xff1a; 其中为常数&#xff0c;那么就称服从参数为的指数分布。 指数分布的重要性质---无记忆性&#xff1a;