好程序员java分享Java面试宝典:类的加载过程,类加载过程主要包含加载、验证、准备、解析、初始化、使用、卸载七个方面,下面一一阐述。
一、加载
在加载阶段,虚拟机主要完成三件事:
二、验证
验证阶段作用是保证
Class文件的字节流包含的信息符合JVM规范,不会给JVM造成危害。如果验证失败,就会抛出一个java.lang.VerifyError异常或其子类异常。验证过程分为四个阶段三、准备
准备阶段为变量分配内存并设置类变量的初始化。在这个阶段分配的仅为类的变量
(static修饰的变量),而不包括类的实例变量。对已非final的变量,JVM会将其设置成“零值”,而不是其赋值语句的值: 那么在这个阶段,
size的值为0,而不是12。 final修饰的类变量将会赋值成真实的值。四、解析
解析过程是将常量池内的符号引用替换成直接引用。主要包括四种类型引用的解析。类或接口的解析、字段解析、方法解析、接口方法解析。
五、初始化
在准备阶段,类变量已经经过一次初始化了,在这个阶段,则是根据程序员通过程序制定的计划去初始化类的变量和其他资源。这些资源有
static{}块,构造函数,父类的初始化等。 至于使用和卸载阶段阶段,这里不再过多说明,使用过程就是根据程序定义的行为执行,卸载由
GC完成。