Java类加载基本过程详细介绍
发布时间 - 2026-01-10 21:49:49 点击率:次Java类加载基本过程详细介绍

基本过程:
- 根据类的全限定名称加载定义类的二进制字节流。
- 将字节流代表的静态存储结构转化为方法区的运行时数据结构
- 内存中生成一个代表这个类的java.lang.Class对象,作为方法去这个类的各种数据访问入口
数组类本身不通过类加载器创建,由java虚拟机直接创建,数组类的元素类型由类加载器加载。
数组类的元素类型:数组去掉所有维度后的类型,
文件格式验证:
- 0xCAFEBABY 魔数开头;
- 主次版本号当前虚拟机可处理;
- 常量类型;
- 索引执行类型;
- utf8编码数据类型,
元数据验证:字节码描述信息语义分析:
- 是否有父类;
- 父类是否继承了final修饰的类;
- 非抽型类是否实现了父类或接口中需要实现的方法;
- 类中的字段、方法的覆盖,重载矛盾;
字节码验证:通过语义流及控制流分析确定程序予以的合法性,正确性,方法体分析验证。
- 符号引用验证:虚拟机将符号引用转化为直接引用时候,解析阶段,对类自身以外信息进行匹配性验证
- 符号引用中通过字符描述的全限定名是否能找到对应的类;
- 指定类中是否存在符合方法字段的描述符,及简单名称所描述的方法和字段;
- 符号引用中类,字段,方法的访问性。
准备:在方法区中为类变量分配内存及设置类变量初始值。
- 初始值通常为数据类型的零值,final修饰的值直接初始化为相应值。
- 类变量为static修饰的变量,区分于实例变量。
解析:虚拟机将常量池中的符号引用替换为直接引用过程
CONSTANT_Class_info,CONSTANT_Fieldref_info,CONSTANT_Methodref_info..
- 符号引用:以一组符号来描述所引用的目标,任何形式的字面量,只要使用时能无歧义的定位到目标,,与虚拟机内存实现无关,无关引用目标是否加载。
- 直接引用:直接指向目标的指针,偏移量或间接定位到目标的句柄,和虚拟机实现的内存相关,直接引用相关的目标对象必须已加载。
- 。。。
初始化:开始执行类定义中的Java程序代码。执行类构造器<cinit>()方法,
<cinit>():
- 编译器根据类文件中定义顺序自动收集类中的类变量的赋值动作和静态语句块儿的语句合并产生,静态语句块儿只能访问到其前定义的变量。
- 区别于类的构造方法,不需要显示的调用父类构造器,虚拟机保证子类的<cinit>()执行之前父类的<cinit>()已经执行完成。
- 父类中的静态语句块儿执行于前。
- <cinit>()对于类或接口不是必须的,如果没有变量赋值操作或静态语句块儿,则不生成。
- 接口的<cinit>()不需要先执行父接口的<cinit>(),同样接口的实现类<cinit>()也不需要。
- 线程安全:虚拟机保证多线程环境中<cinit>()正确的加锁,同步,同一时间只能有一个线程访问初始化类的<cinit>()
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Java类加载过程
# Java类加载过程详解
# Java
# 类加载过程
# 浅谈Java 类中各成分加载顺序和内存中的存放位置
# 深入理解Java 类加载全过程
# java 类加载与自定义类加载器详解
# java 详解类加载器的双亲委派及打破双亲委派
# 详解Java中类的加载顺序
# Java中类加载过程全面解析
# 加载
# 类中
# 转化为
# 也不
# 子类
# 不需要
# 句柄
# 数据结构
# 希望能
# 如果没有
# 详细介绍
# 要先
# 不需
# 谢谢大家
# 要使
# 是否能
# 多线程
# 是否存在
# 量为
# 区中
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
如何自定义建站之星模板颜色并下载新样式?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
重庆市网站制作公司,重庆招聘网站哪个好?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何使用withoutEvents方法临时禁用模型事件
如何用wdcp快速搭建高效网站?
智能起名网站制作软件有哪些,制作logo的软件?
如何用西部建站助手快速创建专业网站?
高防服务器租用如何选择配置与防御等级?
EditPlus中的正则表达式实战(5)
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Laravel如何升级到最新版本?(升级指南和步骤)
如何在云主机快速搭建网站站点?
Android中AutoCompleteTextView自动提示
微信小程序 HTTPS报错整理常见问题及解决方案
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何实现建站之星域名转发设置?
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
html5的keygen标签为什么废弃_替代方案说明【解答】
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在阿里云服务器自主搭建网站?
MySQL查询结果复制到新表的方法(更新、插入)
node.js报错:Cannot find module 'ejs'的解决办法
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
,网页ppt怎么弄成自己的ppt?
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Python函数文档自动校验_规范解析【教程】
如何快速建站并高效导出源代码?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Android实现代码画虚线边框背景效果
高防服务器租用指南:配置选择与快速部署攻略
昵图网官方站入口 昵图网素材图库官网入口
Bootstrap整体框架之CSS12栅格系统
独立制作一个网站多少钱,建立网站需要花多少钱?
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
如何用腾讯建站主机快速创建免费网站?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
如何正确选择百度移动适配建站域名?
制作旅游网站html,怎样注册旅游网站?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?

