JVM——类加载器(JDK8及之前,双亲委派机制)
目录
- 1.类加载器的分类
- 1.实现方式分类
- 1.虚拟机底层实现
- 2.JDK中默认提供或者自定义
- 2.类加载器的分类-启动类加载器
- 3.类加载器的分类-Java中的默认类加载器
- 4.类加载器的分类-扩展类加载器
- 5.类加载器的分类-类加载器的继承
- 2.类加载器的双亲委派机制
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。
类加载器只参与加载过程中的字节码获取并加载到内存这一部分。
1.类加载器的分类
类加载器分为两类,一类是Java代码中实现的,一类是Java虚拟机底层源码实现的
1.实现方式分类
1.虚拟机底层实现
源代码位于Java虚拟机的源码中,实现语言与
虚拟机底层语言一致,比如Hotspot使用C++。
加载程序运行时的基础类
保证Java程序运行中基础类被正确地加载,
比如java.lang.String,确保其可靠性
2.JDK中默认提供或者自定义
JDK中默认提供了多种处理不同渠道的类加载器,
程序员也可以自己根据需求定制
继承自抽象类ClassLoader
所有Java中实现的类加载器都需要继承
ClassLoader这个抽象类
类加载器的设计JDK8和8之后的版本差别较大,JDK8及之前的版本中默认的类加载器有如下几种:
2.类加载器的分类-启动类加载器
⚫ 启动类加载器(Bootstrap ClassLoader)是由Hotspot虚拟 机提供的、使用C++编写的类加载器。
⚫默认加载Java安装目录/jre/lib下的类文件,比如rt.jar, tools.jar,resources.jar等。
3.类加载器的分类-Java中的默认类加载器
⚫ ·扩展类加载器和应用程序类加载器都是JDK中提供的、使用Java编写的类加载器。
⚫ 它们的源码都位于sun.misc.Launcher中,是一个静态内部类。继承自URLClassLoader。具备通过目录
或者指定jar包将字节码文件加载到内存中。
4.类加载器的分类-扩展类加载器
⚫ 扩展类加载器(Extension Class Loader)是JDK中提供的、
使用Java编写的类加载器。
⚫ 默认加载Java安装目录/jre/lib/ext下的类文件。
5.类加载器的分类-类加载器的继承
⚫ ·扩展类加载器和应用程序类加载器都是JDK中提供的、使用Java编写的类加载器。
⚫ 它们的源码都位于sun.misc.Launcher中,是一个静态内部类。继承自URLClassLoader。具备通过目录
或者指定jar包将字节码文件加载到内存中。
2.类加载器的双亲委派机制
每个Java实现的类加载器中保存了一个成员变量叫“父”(Parent)类加载器,可以理解为它的上级, 并不是继承关系。
⚫ 应用程序类加载器的parent父类加载器是扩展类加载器,而扩展类加载器的parent是空。
⚫ 启动类加载器使用C++编写,没有上级类加载器。
⚫ 在类加载的过程中,每个类加载器都会先检查是否已经加载了该类,如果已经加载则直接返回,否则会将加载请求委派给父类加载器。
⚫ 如果类加载的parent为null,则会提交给启动类加载器处理。
⚫ 如果所有的父类加载器都无法加载该类,则由当前类加载器自己尝试加载。所以看上去是自顶向下尝试
加载。
⚫ 第二次再去加载相同的类,仍然会向上进行委派,如果某个类加载器加载过就会直接返回
双亲委派机制指的是:自底向上查找是否加载过,再由顶向下进行加载。


相关文章:
JVM——类加载器(JDK8及之前,双亲委派机制)
目录 1.类加载器的分类1.实现方式分类1.虚拟机底层实现2.JDK中默认提供或者自定义 2.类加载器的分类-启动类加载器3.类加载器的分类-Java中的默认类加载器4.类加载器的分类-扩展类加载器5.类加载器的分类-类加载器的继承 2.类加载器的双亲委派机制 类加载器(ClassLo…...
(七)什么是Vite——vite优劣势、命令
vite分享ppt,感兴趣的可以下载: Vite分享、原理介绍ppt 什么是vite系列目录: (一)什么是Vite——vite介绍与使用-CSDN博客 (二)什么是Vite——Vite 和 Webpack 区别࿰…...
vue之Error: Unknown option: .devServer.
背景 在使用内网穿透工具时,加入对应的配置,启动出现报错。 一、遇到的问题 报错: Error: Unknown option: .devServer. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options. Error: Unknown …...
基于ssm的房屋租售网站(有报告)。Javaee项目,ssm项目。
演示视频: 基于ssm的房屋租售网站(有报告)。Javaee项目,ssm项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 项目介绍: 采用M(mode…...
LeeCode AutoX-4 计算几何
题意 传送门 LeeCode AutoX-4 蚂蚁爬行 题解 枚举每一对几何图形,判断相交性,用并查集维护连通性即可。总时间复杂度 O ( n 2 m ) O(n^2 m) O(n2m),其中 n n n 为几何图形数量, m m m 为查询数量。 根据几何图形性质分类讨…...
Vue3 动态设置 ref
介绍 在一些场景,ref设置是未知的需要根据动态数据来决定,如表格中的input框需要我们主动聚焦,就需要给每一个input设置一个ref,进而进行聚焦操作。 Demo 点击下面截图中的编辑按钮,自动聚焦到相应的输入框中。 &…...
fast lio 2 保存每一帧的点云PCD和里程计矩阵 Odom 在txt文件
修改了源代码的 laserMapping.cpp 文件,替换为下面的代码就可以保存了,注意里面有一个路径,需要修改为你的电脑的路径 // This is an advanced implementation of the algorithm described in the // following paper: // J. Zhang and S. Singh. LOAM: Lidar Odometry an…...
当前主流DDos方式有哪几类
随着互联网的普及和技术的进步,网络安全问题日益凸显。DDoS攻击作为其中一种常见且具破坏性的攻击方式,受到了广泛关注。小德将带领大家一起来了解当前流行的三种DDoS攻击方式。 1. 容量耗尽攻击 容量耗尽攻击是最常见也是最直接的DDoS攻击方式。攻击者通…...
神经网络常见评价指标AUROC(AUC-ROC)、AUPR(AUC-PR)
神经网络的性能可以通过多个评价指标进行衡量,具体选择哪些指标取决于任务的性质。以下是神经网络中常见的评价指标: 准确性(Accuracy): 准确性是最常见的分类任务评价指标,表示模型正确预测的样本数占总样…...
Apache Doris安装部署
Apache Doris安装部署 版本: CentOS 7.6 Apache Doris 0.14.0 编译 选择合适的版本进行下载,此次选择0.14.0版本 下载 | Apache Doris 一、CentOS编译 1 安装依赖 sudo yum groupinstall Development Tools && sudo yum install maven c…...
Excel查询时用vlookup或者xlookup时,虽然用的参数选择的是精确匹配,但是发现不能区分大小写,应该如何解决?
Excel查询时用vlookup或者xlookup时,虽然用的参数选择的是精确匹配,但是发现不能区分大小写,应该如何解决? Index函数解决 INDEX([excel1.xlsx]Sheet1!$E:$E,MATCH(1,EXACT(G5,[excel1.xlsx]Sheet1!$E:$E)*1,0))重点说明&#x…...
4种经典的限流算法
0、基础知识 1000毫秒内,允许2个请求,其他请求全部拒绝。 不拒绝就可能往db打请求,把db干爆~ interval 1000 rate 2; 一、固定窗口限流 固定窗口限流算法(Fixed Window Rate Limiting Algorithm)是…...
<MySQL> 什么是数据库事务?事务该如何使用?
目录 一、事务的概念 二、事务的核心特性 三、事务操作中的常见BUG 3.1 脏读 3.2 不可重复读 3.3 幻读 四、隔离级别 五、使用事务 一、事务的概念 “事务”是指一组操作,在逻辑上是不可分割的,组成这组操作的各个语句,或者全部执行成…...
Linux 网络:PMTUD 简介
文章目录 1. 前言2. Path MTU Discovery(PMTUD) 协议2.1 PMTUD 发现最小 MTU 的过程 3. Linux 的 PMTUD 简析3.1 创建 socket 时初始化 PMTUD 模式3.2 数据发送时 PMTUD 相关处理3.2.1 源头主机发送过程中 PMTU 处理3.2.2 转发过程中 PMTUD 处理 4. PMTUD 观察5. 参考链接 1. 前…...
BatchNormalization:解决神经网络中的内部协变量偏移问题
ICML2015 截至目前51172引 论文链接 代码连接(planing) 文章提出的问题 减少神经网络隐藏层中的”内部协变量偏移”问题。 在机器学习领域存在“协变量偏移”问题,问题的前提是我们划分数据集的时候,训练集和测试集往往假设是独立同分布(i.i.d)的,这种独立同分布更有利于…...
DAC实验(DAC 输出三角波实验)(DAC 输出正弦波实验)
DAC 输出三角波实验 本实验我们来学习使用如何让 DAC 输出三角波,DAC 初始化部分还是用 DAC 输出实验 的,所以做本实验的前提是先学习 DAC 输出实验。 使用 DAC 输出三角波,通过 KEY0/KEY1 两个按键,控制 DAC1 的通道 1 输出两种…...
许多网友可能还不知道,升级到Windows 11其实没那么复杂,只要符合几个条件可以了
如果你的Windows 10电脑可以升级Windows 11,现在怎么办?有几种方法可以免费安装新的操作系统。以下是你的选择。 如果你想升级到Windows 11,你可以随时购买一台已经安装了操作系统的新电脑。然而,如果你目前的Windows 10 PC满足所有必要的升级要求,那么在Windows 11免费的…...
ubuntu下载conda
系统:Ubuntu18.04 (1)下载安装包 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh 报错错误 403:Forbidden 解决方法 wget -U NoSuchBrowser/1.0 https://mirrors.tuna.tsingh…...
重磅 | 进一步夯实生态建设,朗思科技与阿里龙蜥完成兼容性认证
近日,北京朗思智能科技有限公司(以下简称“朗思科技”)自主研发的数字员工产品与OpenAnolis龙蜥社区龙蜥操作系统(Anolis OS)8完成兼容性认证。测试结果显示,双方产品相互兼容,功能正常…...
Qt给控件添加图片
双击qrc文件,选择下面的addFiles,将图片添加进来,然后选中图片右键Select All 设置控件字符: ui.btnSet->setText(""); 设置资源: ui.btnSet->setStyleSheet("QPushButton{background-image:…...
避开SAP记账第一个坑:F-02凭证录入的5个细节与FS10N对账技巧
SAP财务实操避坑指南:F-02凭证录入的5个关键细节与FS10N高效对账技巧 刚接触SAP FI模块的中级用户,往往在完成基础培训后信心满满地开始独立操作,却在F-02凭证录入时频频踩坑。这些看似简单的字段选择背后,隐藏着财务逻辑与系统设…...
OpenClaw人人养虾:LiteLLM 统一网关
LiteLLM 是一个开源的 LLM API 统一网关(Unified Gateway),支持 100 模型提供商,提供统一的 OpenAI 兼容 API 格式。 安装 LiteLLM pip 安装 pip install litellm[proxy] Docker 安装 docker run -p 4000:4000 \-e OPENAI_AP…...
AI辅助开发:用自然语言描述需求,让快马平台自动生成精准的Copaw自动化脚本
AI辅助开发:用自然语言描述需求,让快马平台自动生成精准的Copaw自动化脚本 最近在做一个自动化测试项目,需要大量使用Copaw框架来模拟用户操作。作为一个刚接触Copaw的新手,最头疼的就是要花大量时间研究各种API和页面元素定位方…...
ADS工程化实践:AEL自定义函数库的创建与集成
1. 为什么需要AEL自定义函数库? 在射频电路设计中,我们经常会遇到重复计算的场景。比如计算微带线阻抗、滤波器参数、噪声系数等,每次都要重新输入公式不仅效率低,还容易出错。我刚开始用ADS时,就经常因为手误输错公式…...
Spring_couplet_generation 构建RESTful API最佳实践
Spring_couplet_generation 构建RESTful API最佳实践 最近在做一个挺有意思的小项目,想把一个春联生成模型包装成服务,方便其他应用调用。这让我重新思考了如何把一个AI模型能力,通过API的方式,既规范又稳定地提供出去。相信不少…...
VideoAgentTrek-ScreenFilter模型压缩与量化教程:在边缘设备上实现轻量部署
VideoAgentTrek-ScreenFilter模型压缩与量化教程:在边缘设备上实现轻量部署 想让一个原本需要强大GPU才能流畅运行的视频分析模型,在树莓派或者Jetson Nano这类小巧的边缘设备上也能跑起来吗?这听起来像是个不可能的任务,但通过模…...
无人水下航行器(UUV)与无人航空系统(UAS)时空会合关键技术研究附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...
GLM-4.1V-9B-Base入门必看:中文提问技巧——如何写出高稳定度问题
GLM-4.1V-9B-Base入门必看:中文提问技巧——如何写出高稳定度问题 1. 认识GLM-4.1V-9B-Base GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型,专门用于处理图像内容识别、场景描述、目标问答等中文视觉理解任务。与普通聊天模型不同,它更擅…...
Intv_AI_MK11 Anaconda数据科学环境配置:一站式AI研发平台搭建
Intv_AI_MK11 Anaconda数据科学环境配置:一站式AI研发平台搭建 1. 为什么选择Anaconda搭建AI开发环境 如果你刚开始接触AI开发,可能会被各种环境配置问题困扰。不同框架的版本兼容性、CUDA驱动安装、Python包依赖冲突...这些问题足以让新手望而却步。A…...
Vim编辑器的.swp文件:安全隐患与防范措施全解析
Vim编辑器.swp文件安全风险深度剖析与实战防护指南 当你深夜加班修改服务器配置文件时,突然断电导致Vim异常退出。第二天发现.nginx.conf.swp文件被恶意用户下载,内含未保存的数据库密码——这种场景在运维工作中并不罕见。.swp文件作为Vim的自动备份机制…...





