你是否对类的生命周期有所理解?
类从被虚拟机加载到内存开始,结束于卸载出内存,这为类的一个生命周期,其包括加载、验证、准备、解析、初始化、使用、卸载这七个阶段。
类加载全部过程,也就是加载、验证、准备、解析、初始化这五个阶段,下面来简单的介绍一下。
加载
在加载阶段,虚拟机主要完成这三个事情:
1、通过类的权限定名来寻找定义此类的二进制字节流。
2、将此二进制字节流所代表的静态结构存储在方法区中。
3、在内存中生成一个对象来代表此类作为访问此类数据的接口。
验证
在这阶段主要确保class文件的字节流符合虚拟机规范的要求,确保不会危害虚拟机。
准备
准备阶段主要是为类变量(被static修饰的变量)设置内存以及设置初始值(零值),比如,public static int a = 1;a在准备阶段被赋予0值,不是本赋予1。
解析
在解析阶段主要是虚拟机把常量池中的符号引用转变为直接引用的过程。
初始化
在初始化阶段就是真正的为类变量和其他资源赋值了,换句话说在这个阶段是由程序员通过设置而决定的。其是在这一阶段,就是虚拟机执行clinit方法,为类变量赋值和初始化其它资源。clinit方法由虚拟机根据类是否存在类变量或者静态区域自动生成的。
查看原文 >>