类加载与ClassLoader的理解
1.加载(1将Class文件字节码加载到内存中,
2将静态数据转换方法区的动态数据运行时的数据结构,
3然后生成一个代表这个类的java.lang.Class对象)
2.链接(将Java类的二进制代码合并到jvm的运行状态之中的过程)
a.验证;确保加载信息符合规范,没有安全方面的问题
b.准备:正式为类变量static分配内存变更设置变量默认初始值阶段,这些内存都在方法去分配
c.解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程
3初始化:
1.执行类的构造器<clinit>()方法的过程。
类构造器<clinit>()方法是由编译期自动收集类中变量赋值动作和静态代码块中的语句合并产生(类构造器是构造类信息的,不是构造该类对象的构造器)
2.当初始化一个类的时候,如果发现其他父类还没有进行初始化则需要先按初始化父类
3.虚拟机会保证一个类,<clinit>()方法在多线程环境中被正确加锁和同步
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报