虚拟机把描述类的数据加载到内存里面,并对数据进行校验、解析和初始化,最终变成可以被虚拟机直 接使用的class对象;
类的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析 (Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。
其中准备、验证、解析3 个部分统称为连接(Linking)。如图所示: 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班 地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言 的运行时绑定(也称为动态绑定或晚期绑定)
加载,加载分为三步:
1、通过类的全限定性类名获取该类的二进制流;
2、将该二进制流的静态存储结构转为方法区的运行时数据结构;
3、在堆中为该类生成一个class对象;
验证:验证该class文件中的字节流信息复合虚拟机的要求,不会威胁到jvm的安全;
准备:为class对象的静态变量分配内存,初始化其初始值;
解析:该阶段主要完成符号引用转化成直接引用;
初始化:到了初始化阶段,才开始执行类中定义的java代码;
初始化阶段是调用类构造器的过程;