生命周期:
1.装载
1)ClassFile -->字节流 --> 类加载器
2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
3)在堆中生成一个代表这个类的java.lang.Class对象,做为方法区中数据的访问入口
2.链接
1)验证 贯穿整个过程
文件格式验证
元数据验证
字节码验证
符号引用验证
2)准备
为类的静态变量分配内存,并赋值(当前类型的默认值)。
private static int a = 1; 那么在准备阶段a的值就是0。
3)解析
解析是从运行时常量池中的符号引用动态确定具体值的过程
符号引用转化成直接引用----解释下符号引用转化为直接引用:符号引用类似于手机号,直接引用类似一个人, 符号引用转化为直接引用则意味着拿着手机号去找对应到这个人
3.初始化:
初始化静态变量的值,初始化静态代码块 初始化当前类的父类
4. 使用
5.卸载