JVM类加载机制
描述
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行检验、准备、解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制
类加载的过程
加载、验证、准备、解析、初始化 5个阶段所执行的具体动作
周期包括
- 加载(Loading)
- 验证(Verification)
- 准备(Preparation)
- 解析(Resolution)
- 初始化(Initialization)
- 使用(Using)
- 卸载(Unloading)
总结
类的执行顺序如下:
确定类变量的初始值: 在类初始化的时候,在准备阶段jvm会为类变量(static修饰的变量)初始化,如对象会被初始化为null,int被初始化为0
找到入口执行: 找到main方法,开始执行,在执行之前会对main方法所在类进行初始化
执行类初始化方法: JVM 会按顺序收集类变量的赋值语句、静态代码块,组成类初始化方法去执行
执行对象实例化方法: JVM 会按照收集成员变量的赋值语句、普通代码块,最后收集构造方法,组成对象实例化方法去执行
释义:
符号引用 :
符号引用以一组符号来描述所引用的目标。符号引用可以是任何形式的字面量,只要使用时能无歧义地定位到目标即可,符号引用和虚拟机的布局无关。个人理解为:在编译的时候一个每个java类都会被编译成一个class文件,但在编译的时候虚拟机并不知道所引用类的地址,多以就用符号引用来代替,而在这个解析阶段就是为了把这个符号引用转化成为真正的地址的阶段。
参考链接:
不积跬步,无以至千里;不积小流,无以成江海。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具