虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最总形成可以被虚拟机直接使用的Java类型。这就是虚拟机的类加载机制。
类加载的过程:
类从被加载到虚拟机内存中开始,到卸载出内存位置,它的整个生命周期包括:加载(Loading),验证(Verification),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)7个阶段。其中验证,准备,解析三个部分统称为连接(Linking)这7个阶段的发生顺序如图所示:
图中,加载,验证,准备,初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班的开始,而解析阶段则不一定:它在某些情况下可以再初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或者晚期绑定)。注意,这里是按部就班的“开始”,而不是按部就班的“进行”或“完成”。强调这点是因为这些阶段通常都是互相交叉的混合式进行,通常会在一个阶段执行的过程中调用、激活另外一个阶段。