jvm如何加载java类

  • java类型
    • 基本类型(8种基本类型)
    • 引用类型
      • 类(有字节流)
      • 接口(有字节流)
      • 数组(jmv直接生成,无字节流)
  • 类加载过程
    • 加载(查找字节流,创建类的过程)
      • 加载器:启动器加载器、扩展器加载器、应用加载器
      • 加载过程:双亲委派
    • 链接(将创建的类合并至jvm中,使之能执行的过程)
      • 验证(确保符合jvm规范)
      • 准备(为被加载类的静态字段分配内存)
      • 解析(将符号引用解析为实际引用,非必须)
    • 初使化(为标记的常量值字段赋值和执行< clinit >方法的过程)
      • 当虚拟机启动时,初始化用户指定的主类
      • 新建目标类实例的new指令时,初始化 new 指令的目标类
      • 调用静态方法的指令时,初始化该静态方法所在的类
      • 访问静态字段的指令时,初始化该静态字段所在的类
      • 子类的初始化会触发父类的初始化
      • 接口定义了default方法,实现该接口的类的初始化,会触发该接口的初始化
      • 使用反射 API 对某个类进行反射调用时,初始化这个类
      • 初次调用 MethodHandle 实例时,初始化该 MethodHandle 指向的方法所在的类

本文地址 https://www.frank8g2g3.cn/2019/08/28/jvm如何加载java类/

frank wechat
扫描二唯码,订阅我的公众号