类加载是Java程序运行的步,研究类的加载有助于了解JVM执行过程,并指导开发者采取有效的措施配合程序执行。
类从被加载的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization五个阶段。

加载:
在加载阶段,虚拟机需要完成以下三件事:
通过一个类的全限定名称来获取定义此类的二进制字节流;
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;
在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。
验证:
不同的虚拟机对类验证的实现可能会有所不同,但大致都会完成以下四个阶段的验证:文件格式的验证、元数据的验证、字节码验证和符号引用验证。
准备:
准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中进行分配。
解析:
解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。包括类或接口的解析、字段解析、类方法解析、接口方法解析等方式。
初始化:
类初始化阶段是类加载过程的后一步,前面的类加载过程中,除了加载(Loading)阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机和控制。到了初始化阶段,才真正开始执行类中定义的Java程序代码。
