- 装载(load)
- 通过一个类的全限定名获取定义此类的二进制字节流
- 将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构
- 在Java堆生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口
- 链接
- 验证
- 保证加载类的正确性 文件格式验证/元数据验证/字节码验证/符号引用验证/
- 准备
- 为类的静态变量分配内存,并将其初始化为默认值
- 解析
- 把类中的符号引用转换为直接引用
- 验证
- 初始化
- 对类的静态变量,静态代码块执行初始化操作