一文搞懂类加载过程

废话不多说,先上一张图
在这里插入图片描述
1、“加载”过程做了什么?什么是双亲委派?为什么要使用双亲委派机制?有什么利弊?

**加载:**就是将编译后的.class字节码文件【jvm只认.class文件,.class文件也并非只有java编译后才能是.class文件】,load到方法区【jdk 1.7以前叫永久代,1.8以后就叫元数据区:meta space】。在加载的过程中并不会拿过来字节码文件就加载,而是从Custom classloader缓存一层层往上找,直到Bootstrap classloader,找到了就不再加载,找不到后会从Custom classloader返回往下,看该字节码应该属于哪一个加载器去加载,然后它自己去加载,这就是双委派机制。
**使用双亲委派机制的原因是:**安全,避免用户自己随意定义一些非法或者不符合定义规范的类,比如你自定义一个:java.lang.String,这样会引起错乱。

**2、验证或者校验过程做了什么?

就是检查字节码文件是否合法,比如:字节码开始是否按规定、字节码文件是否被编译后篡改等,就是为了下一步的解析做好准备,避免非法字节码被携带进入后续流程。

3、准备过程做了什么?【很重要】

为静态变量赋初始值,这个值是默认的初始值哦。

4、解析过程做了什么?

将上一步常量池里面的变量的符号引用换成直接内存地址引用。

5、初始化过程做了什么?

静态变量赋初始值,有可能会将默认的值给替换掉。

6、对象被调用的几种方式你知道吗?
属性注入、构造函数注入、new

7、了解GC吗?常用的垃圾收集器有哪些?分别有什么特点?垃圾标定算法有哪些?垃圾清除方式有哪些?**
//TODO

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

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

相关文章

C++ std::string使用效率优化

字符串操作是任何一个C开发程序无法绕过的点,很多时候针对字符串的操作需要进行优化,从而达到更优的使用效率和内存利用率。一般会采用标准的std::string替代C字符串,一方面是std::string为一个成熟的类对象,其成员操作基本能满足…

阿赵UE学习笔记——4、新建关卡

阿赵UE学习笔记目录 大家好,我是阿赵。   之前介绍了虚幻引擎的常用窗口功能,这次开始创建游戏内的世界了。首先先从创建关卡开始。 一、创建新关卡 在使用UE引擎制作游戏,首先要有一个场景作为基础,这个场景在UE里面成为关卡。…

若依(Spring boot)框架中如何在不同的控制器之间共享与使用数据

在若依框架或Spring boot框架中,控制器共享和使用数据是为了确保数据一致性、传递信息、提高效率和降低系统复杂性。这可以通过全局变量、依赖注入或数据库/缓存等方式实现。共享和使用数据对框架的正常运行非常关键,有助于促进控制器之间的协同工作&…

消息走漏提前做空腾讯爆赚30倍?逐帧分析还原真相

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

C语言结构体内存对齐

文章目录 一、结构体内存对齐问题二、查看结构体成员起始位置三、设置内存对齐方式 一、结构体内存对齐问题 如下的info_s结构体类型,包含一个int型成员age, 一个char型成员gender, 一个int型成员id。 单从数据成员的大小进行分析,整个结构体的大小应为…

【JavaWeb学习笔记】18 - 文件上传下载

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/fileupdown 目录 文件上传 一、基本介绍 二、文件上传的基本原理 ​编辑 三、文件上传应用实例 四、文件上传的注意细节 1.解决中文乱码问题 2.分割文件夹 3.防止重名 4.百度WebUploader 5.空…

Windows无法安装edge 无法连接Internet

如果出现以上问题,或者Edge浏览器无法更新,提示防火墙错误之类的都可以解决问题。 下载以下证书文件并导入即可解决问题。 MicrosoftRootCertificateAuthority2011.cer

注意力机制(数学公式)

人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性 计算机注意力机制是为了让卷积神经网络注意到他更加需要注意的地方 ,而不是什么都关注 。 分为三种注意力机制,空间注意力机制,通道注意力机制,以及两者的结合。 …

关于MULTI#STORM活动利用远程访问木马瞄准印度和美国的动态情报

一、基本内容 于2023年6月22日,一款代号为MULTI#STORM的新网络钓鱼活动将目标瞄准了印度和美国,利用JavaScript文件在受感染的系统上传播远程访问木马。 二、相关发声情况 Securonix的研究人员Den luzvyk、Tim Peck和Oleg Kolesnikov发表声明称&#x…

【AI服饰】孔雀背景服装_AIGC服饰订制设计咨询产业

服饰系列 AIGC(Artificial Intelligence Generated Content)服饰图是指通过人工智能生成的服装设计图案。随着人工智能技术的不断进步,AIGC服饰图在未来有着广阔的发展空间。 首先,AIGC服饰图可以提供更多的设计可能性。传统的服…

PYTHON基础:K最邻近算法

K最邻近算法笔记 K最邻近算法既可以用在分类中,也可以用在回归中。在分类的方法,比如说在x-y的坐标轴上又两个成堆的数据集,也就是有两类,如果这个时候有个点在图上,它是属于谁? 原则就是哪一类离它比较近…

RK3568平台开发系列讲解(Linux系统篇)GPIO调试手段

🚀返回专栏总目录 文章目录 一、/sys/kernel/debug/gpio目录二、/sys/kernel/debug/pinctrl 目录沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 GPIO调试手段。 一、/sys/kernel/debug/gpio目录 debugfs 是 Linux 内核提供的一个调试文件系统,可以用于…

Navicat删除连接报错:service in use cannot be deleted的解决方法

我在删除连接时遇到了这个报错,内容如图。下面我介绍两种解决方法,非常简单。 第一种 右键点击想要删除的连接,先选择“关闭连接”。再选择“删除连接” 第二种 如果第一种方法无效,直接关闭Navicat软件,重新打开。然后…

javaweb--实验十 --期末复盘

实验十 JDBC连接MySQL 本次实验没有代码补全,以下都是完整过程,详细关注连接过程的问题 一、实验目的: 1、掌握JDBC连接数据库的一般操作。 2、理解JavaBean的基本作用。 3、理解分层设计的思想。 二、 实验内容: 实现学生信…

广州华锐互动VRAR:VR煤矿安全警示教育系统提供真实生动的场景体验

随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,为人们的生活带来了诸多便利。在煤矿行业,VR技术的应用也日益受到关注。广州华锐互动开发的VR煤矿安全警示教育系统,旨在通过虚拟现实技术&…

WordPress主题大前端DUX v8.3源码下载

DUX主题8.3版本更新内容: 新增:Cloudflare Turnstile 免费验证功能 新增:子菜单页面模版,支持多级页面 新增:手机端文章内表格自动出现横向滚动条,可集体或单独设置滚动宽度 新增:标签云页面模版…

drf知识-06

视图集 #1 ModelViewSet: 视图类:GenericAPIView 映射:list create retrieve update destroy #2 ViewSetMixin类: 只要继承它,路由写法变了 分析:ViewSetMixin 不是视图类,支…

FTP不同方式使用与搭建与端口号常识了解

目录 一、FTP介绍 二、winServer2012搭建ftp服务器 在虚拟机搭建具体步骤 2.1、新建组: 2.2、新建用户名 2.3、把用户名与组绑定 2.4、安装ftp 2.5、配置ftp服务器 2.6、给文件夹调整权限 2.7、测试 a、服务器本机测试 b、外部机器测试 C、借助工具Mobal…

低代码开发:数字化转型的引擎

引言 在当今数字化时代,组织面临着不断变化的市场需求和技术挑战。数字化转型已成为维持竞争力的关键,而低代码开发正在崭露头角,成为加速创新和数字化转型的有力工具。本文将深入探讨低代码开发的核心概念、优势和应用,以揭示它…

数据库基础面试第四弹

1. Redis的数据结构有哪些 1. 字符串(String): 字符串是Redis最基本的数据结构。它可以存储任意类型的数据,包括文本、整数或二进制数据。字符串类型的值最大可以达到512MB。 1 2 3 4 SET name "John" GET name 将字…