顺序:
加载 ---- 连接(验证,准备,解析)---- 初始化
加载
JVM将用到的.class对应的字节码文件加载进内存(方法区),将字节码常量池转换成运行时常量池。
连接
- 验证:验证类的正确性
目的:主要是为了保证类加载进来的字节流符合虚拟机规范,不会造成安全问题
1.文件格式的验证
2.元数据的验证
3.字节码的验证
- 准备
目的:主要是为了类变量(注意,不是实例变量)分配内存,并赋予初值
- 解析
目的:将符号引用替换成直接引用(内存地址)
初始化
为静态变量赋自定义的初始值,初始化静态方法