验证
- 目的在于确保前一阶段生成的Class文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确性,不会危害虚拟机自身安全
主要包含四种验证,文件格式验证,元数据验证,字节码验证,符号引用验证
准备
为类变量(静态变量)分配内存(方法区)并且设置类变量的默认初始值(零值,整型为0,浮点型为0.0,布尔类型为false,char类型为\u0000,引用类型为null)
- 这里不包含被final修饰的static,因为final在编译阶段的时候就被分配了。
这里还没有创建对象,所以不会为实例变量分配初始化,而且实例变量是分配在堆空间
解析
将常量池内的符号引用转换为直接引用的过程
- 解析动作主要针对类或者接口、字段、类方法、接口方法、方法类型等等,对应常量池中的CONSTANT_CLASS_INFO、CONSTANT_FIELDREF_INFO、CONSTANT_METHODREF_INFO等。