类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证(Verification)、准备(Preparation)、解析(Resolution)3个部分统称为连接(Linking)。这7个阶段的顺序如图:
加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类加载过程必须按照这个顺序开始,但是解析就不一定,因为Java存在运行时绑定。
加载
加载阶段虚拟机需要完成三件事:
1. 通过一个类的全限定名类获取定义此类的二进制字节流。
2. 蒋这个字节流代表的静态存储结构转化成方法区的运行时数据结构。
3. 在内存中生成一个该类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。