类加载的几个阶段
类加载的几个阶段:
加载,通过类加载器查找字节流,创建类的过程。
验证,确保被加载类能够满足java虚拟机的约束条件
准备,
为被加载的静态字段分配内存
构造跟类层次相关的数据结构,比如方法表
解析,
将符号引用解析成为实际引用(字段和方法的内存地址)
初始化
被final修饰的静态字段,并且数据类型是基本的数据类型或者字符串,会被标记位常量。其余的静态字段和静态代码块会被java编译器一同放进<clinit>方法中(类构造器)。 --实例构造器为<init>
在初始化阶段,会为常量值字段赋值,并执行<clinit>方法。多个线程同时初始化一个类,会通过加锁的方式来确保<clinit>方法只会被执行一次。
类什么时候才会被初始化
1.虚拟机启动的时候,初始化用户指定的类。
2.new 一个对象
3.调用静态方法
4.调用静态字段
5.初始化子类,会初始化父类。
6.反射

浙公网安备 33010602011771号