类加载过程及类加载器

一、类加载过程(初始化)

Loading

  1. 类加载采用双亲委派机制(主要出于安全来考虑)

  2. 类加载器说明
    在这里插入图片描述

  3. LazyLoading 五种情况

  1. new getstatic putstatic invokestatic指令,访问final变量除外
  2. java.lang.reflect对类进行反射调用时
  3. 初始化子类的时候,父类首先初始化
  4. 虚拟机启动时,被执行的主类必须初始化
  5. 动态语言支持java.lang.invoke.MethodHandle解析的结果为REF_getstatic REF_putstatic REF_invokestatic的方法句柄时,该类必须初始化

Linking

  1. Verification

    验证文件是否符合JVM规定

  2. Preparation

    静态成员变量赋默认值

  3. Resolution
    将类、方法、属性等符号引用解析为直接引用
    常量池中的各种符号引用解析为指针、偏移量等内存地址的直接引用

Initializing