虚拟机的类加载机制
类的生命周期
加载
- 通过一个类的全限定名获取对应于该类的二进制字节流
- 将这个二进制字节流转储为方法区的运行时数据结构
- 于内存中生成一个 java.lang.class 类型的对象,用于表示该类的类型信息。
验证
- 文件格式验证
- 元数据验证
- 字节码验证
- 符号引用验证
准备
- 类变量赋「系统初值」的过程
解析
- 用来实际指向运行时常量池中的直接引用的地址
初始化(Initialization)
发生以下5种情况会出现初始化
- 遇到new、getstatic、putstatic或invokestatic这4条字节指令时
- 反射调用
- 当初始化一个类的时候,发现其父类还没有进行过初始化,则需要先触发其父类初始化