1. JVM类加载机制

news2025/7/5 18:35:59

1. JVM类加载机制图解

在这里插入图片描述
下面我们来详细分析一下这个图解

1.1 其中loadClass()方法的调用的类加载的过程有如下几步

加载->验证->准备->解析->初始化->使用->卸载

  • 加载:在硬盘上查找并通过IO读入字节码文件,当使用到这类的时候才会加载,也就是要有静态方法,main()方法的时候,或者new对象等等,会在加载阶段中生成一个代表这个类的Class对象(也就是实例),作为方法区这个类的各种数据的访问入库
  • 校验:验证字节码文件的正确性
  • 解析:将符号引用替换为直接引用,该阶段会把一些静态方法,main方法替换为指向数据所存内存的指针或者句柄等等,这就是所谓的静态链接过程(在类加载期间完成),动态链接是在程序运行期间完成的将符号引用替换为直接引用
  • 初始化:对类的静态变量初始化为指定的值,并且执行静态代码

在这里插入图片描述
动态链接,静态链接就是把字面量换成对应的地址,只不过一个是在初始化的时候,另一个是在运行的时候

2.类加载器源码剖析,他为什么是这样的,为什么是上面那副图解

2.1 首先默认通过c++启动了Launcher类,让我们来看看为什么它能够创建ext类加载器和app类加载器

  • 首先默认创建了Launcher类,并且调用了Launcher的初始化方法
    在这里插入图片描述
    这就是为什么创建了类加载器的原因,那么下一步我们看看调用的两个方法做了什么操作
    在这里插入图片描述

在这里插入图片描述
这里还有一些细节就不在描述了,读者可以自己去看看,位置就这里,并且这里说明了为什么app的类加载器的parent属性是ext类加载器

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

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

相关文章

[GYCTF2020]Ezsqli

先试一下万能密码 1 or 11# 发现有过滤,fuzz看一下过滤了什么 if,|,|| 没过滤,过滤了information_schema MySQL5.7新特性: 由于performance_schema过于复杂,所以mysql在5.7版本中新增了sys schemma&#x…

Docker实战之Redis主从集群搭建实战

实战 本实验将练习三主三从的Redis的docker集群快速搭建,实现集群的动态扩容和缩容,主从切换等常见实践项目。 拉取镜像 docker pull redis:6.0.8搭建主从 docker run -d --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/red…

Allegro输出DXF文件操作指导

Allegro输出DXF文件操作指导 Allegro支持输出DXF文件,用于检查PCB的结构,具体操作如下 首先在PCB上打开需要的输出的层面,需要哪层开哪层,如下图所示 点击file-export 弹出一个对话框,输入文件名,格式选择Reversion14 ,单位选择mm,精度选择4 然后点击Edit 会出现一…

视频播放

QMediaPlayer不仅可以播放音频,还可以播放视频,不过要在屏幕上显示的话需要使用QVideoWidget和QGraphicsVideoItrm或自定义的类。QMovie 播放GIF文件QVideoWidget和QGraphicsVideoItrm都属于QMulimedia Widgets模块QVideoWidget 继承自QWiaget&#xff0…

Android Studio下载安装

一、下载 二、安装步骤 点击下载的安装包,选择地址的时候可以自定义,其他按照默认配置即可。 启动应用,开始配置 选择安装类型为标准安装: 选择主题 确认配置 同意协议 开始下载相关组件: 下载完成

SpringCloud - GateWay服务网关

文章目录一. Gateway概述1.Gateway是什么2. Gateway作用3. 微服务架构中网关的位置4. SpringCloud Gateway概念5. SpringCloud Gateway IO 模型二.Gateway的三大核心概念1. Route 路由2. Predicate 断言3. Filter 过滤4. 总结三.Spring Cloud Gateway工作流程四.服务搭建1. 创建…

Android 基础知识3-3(九妹)图怎么用呢?

1.本节引用: 可能有的一些疑问: 1.什么是.9图片? 答:图片后缀名前有.9的图片,如pic1.9.png这样的图片 2. .9图片能干嘛? 答: 在图片拉伸的时候特定的区域不会发生图片失真,而不失真的区域可以…

知识库指南4.0|AIGC Web3 元宇宙发展趋势的学习与实践指引

如何突破信息层面的认知,在 AIGC、Web3 与 元宇宙领域从 “围观” “看热闹” 到真正入门理解,并跟紧行业发展趋势,探索实践落地?(阅读原文领取限量优惠券)Mixlab小杜满足上述学习需求的知识库需要包含四要…

大数据(9f)Flink双流JOIN

文章目录概述开发环境使用状态列表实现 INNER JOIN(双流connect后CoProcessFunction)基于间隔的JOIN(Interval Join)基于窗口的JOIN(Window Join)概述 Flink双流JOIN可用算子或SQL实现,FlinkSQ…

图论基础学习笔记

图论1.简单图2.简单图的补图3.图的同构4.完全图5.偶图6.完全偶图1.简单图 简单图:无环无平行边的图。下图:左环右平行边 平凡图:G(1,0)G(1,0)G(1,0) 零图:G(p,0)G(p,0)G(p,0) 2.简单图的补图 补图:对于 G(V,E)G(V,…

继电器电路分析-继电器放电时间、反向冲击电压

继电器的应用,相信大家都知道,在电路中只要给它供电、断电也就可以工作了。 然而,它的应用细节,不知道大家有没注意 。下面谈谈我的观点。 01 现在流行的接法 如下图: 图中,继电器的线圈经过Q1作为开关…

《丞相好梦中杀人,我喜梦中听课》(1)密码学入门

前言 🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:红中 🫒每日emo:等我把脸皮磨厚 🍂专栏地址:网安专栏 今天周日&#xf…

金融开放度指数-世界银行三位数字编码、ISO Alpha-3 Code等多指标数据

1、数据来源:http://web.pdx.edu/~ito/Chinn-Ito_website.htm 2、时间跨度:1970-2019 3、区域范围:全国 4、指标说明: Chinn-Ito指数(KAOPEN)是衡量一个国家资本账户开放程度的指标。 该指数最初是在Chinn和Ito (Journal of D…

并发基础(四):线程池

尺有所短,寸有所长;不忘初心,方得始终。 请关注公众号:星河之码 线程池技术是一种多线程处理形式,将任务添加到队列中,通过线程池中创建出来的现成执行这些任务,省去了创建线程和销毁线程的消耗…

let const var区别

文章目录写在前面1.var关键字1.1 没有块级作用域的概念,有全局作用域、函数作用域的概念1.2 存在变量提升1.3 全局作用域用var声明的变量会挂载到window对象上1.4 同一作用域中允许重复声明1.5 不初始化值默认为undefined2.let关键字2.1 有块级作用域的概念2.2 不存…

HTB靶机:RainyDay

目录介绍主机信息探测网站探测子域名爆破(BurpSuite)目录爆破爆破参数值分析 & 破解hash登录系统反弹shell端口转发内网穿透【很坑】配置socks代理内网扫描换用windows做内网渗透子域名信息收集爆破密钥位置爆破密钥内容JWT攻击进程监控Flag1 & 获取SSH私钥提权python沙…

UE4 通过按键切换不同的HUD

咱们在玩游戏的时候,通常会和界面进行各种各样的互动,而且会动都是在不同的界面上,所以需要在不同的界面上进行切换或者多个HUD重叠显示在一起。 首先创建两个HUD 2.重新定义一个PlayerController类 // Fill out your copyright notice…

被裁后半月面试8家公司无果,凭借这份Java面试指南成功入职阿里

前言 上个月班上的好好的突然被通知"毕业了",现在工作也确实不好找。之前近一个月面了很多大大小小的公司降薪太严重都没考虑去,最后没办法本来都打算随便去一家了却偶然得到一个阿里的面试机会,足足面了七面(我太难了…

前有刘德华,后有腾格尔和光头李进,明星为何都热衷于线上演唱会

2022年11月19日,有着“草原歌神”之称的腾格尔,开启了自己的线上演唱会,并且取得了圆满的成功。其实在此之前,天王刘德华已经在某音平台,两次开启自己的线上演唱会,都受到了非常好的效果。 为什么音乐领域的…

手把手教你定位线上MySQL锁超时问题,包教包会

昨晚我正在床上睡得着着的,突然来了一条短信。 ​什么?线上的订单无法取消! 我赶紧登录线上系统,查看业务日志。 ​发现有MySQL锁超时的错误日志。 不用想,肯定有另一个事务正在修改这条订单,持有这条订单的…