解答
类加载即JVM把class文件加载到内存,并对数据进行校验、准备、解析、初始化,最终形成JVM可以直接使用的Java类型的过程。
1、加载
将class字节码文件加载到内存中,并将这些数据转换成方法区中的运行时数据(静态变量、静态代码块、常量池等),在堆中生成一个Class类对象代表这个类(反射原理),作为方法区类数据的访问入口
2、链接
将Java类的二进制代码合并到JVM的运行状态之中。包括验证、准备、解析三步
3、初始化
初始化阶段是执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块(static块)中的语句合并产生的。
验证字节码文件的安全性,是否符合虚拟机规范
准备给静态变量分配空间并且给默认值,如果是final修饰,会直接提前赋值,uuid例外
解析,将符号引用解析为直接应用并存放到运行时常量池中
加载链接初始化