类加载的几个阶段

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

posted @ 2020-09-10 15:19  小__七  阅读(321)  评论(0)    收藏  举报