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 】
相关推荐:
如何在Ubuntu系统下快速搭建WordPress个人网站?
UC浏览器如何设置启动页 UC浏览器启动页设置方法
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
如何在云服务器上快速搭建个人网站?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
js实现点击每个li节点,都弹出其文本值及修改
Laravel怎么调用外部API_Laravel Http Client客户端使用
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
javascript基本数据类型及类型检测常用方法小结
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何快速搭建自助建站会员专属系统?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
用v-html解决Vue.js渲染中html标签不被解析的问题
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel PHP版本要求一览_Laravel各版本环境要求对照
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
如何用好域名打造高点击率的自主建站?
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
制作旅游网站html,怎样注册旅游网站?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Laravel如何处理和验证JSON类型的数据库字段
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何在腾讯云免费申请建站?
node.js报错:Cannot find module 'ejs'的解决办法
iOS正则表达式验证手机号、邮箱、身份证号等
利用vue写todolist单页应用
Bootstrap整体框架之CSS12栅格系统
如何快速使用云服务器搭建个人网站?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Swift中swift中的switch 语句
详解jQuery中的事件
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
BootStrap整体框架之基础布局组件
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
微信公众帐号开发教程之图文消息全攻略
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制

