类加载的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中验证、准备和解析三个部分统称为连接。
加载
1.根据类的全限定名获取类的二进制字节流
2.二进制字节流代表的静态结构转化为方法区运行时的数据结构
3.内存创建Class对象,作为方法区这个类的各种访问入口
连接
验证
验证Class文件是否符合虚拟机的规范,保证被加载类的正确性
- 文件格式验证
- 元数据验证
- 字节码验证
- 符号引用验证
准备
为静态成员变量分配内存和赋初值在方法区
解析
主要把常量池中的符号引用替换成直接引用
初始化
执行类的构造器clinit方法