类加载

Java73

加载-----连接(验证---准备---解析)------初始化:

  • 加载就是 将类的二进制字节码载入JVM中、将这个字节流代表的存储静态存储结构转化为方法区的运行时数据结构、在堆中生成一个java.lang.Class 对象,表示堆方法区中类的引用
  • 验证就是验证加载进来的类是不是对jvm有害。文件格式验证(在类装载过程)、元数据验证(在准备的那一步用到了元素据)、字节码验证(贯穿流程)、符号引用验证(贯穿流程)。这四个验证并不是严格按照这个顺序走下来的,是贯穿整个流程的过程。

  • 准备工作是为静态变量和常量设置默认值。分配内存并为类的静态变量赋值,这是当前类型的默认值。

    [En]

    preparation is to set default values for static variables and constants. Allocates memory and assigns values to static variables of the class, the default value of the current type.*

  • 解析类中的符号引用(一些描述性信息,如字段和方法,因为我们不能在文件中将其描述为此字段,也不能指向实际内存。指向直接引用(指向真实地址)

    [En]

    parsing the symbolic reference in the class (some descriptive information such as fields and methods, because we cannot describe it as this field in the file, nor can it point to real memory. To a direct reference (pointing to a real address)*

  • 按照我们的意愿进行初始化。

扩展: 初始化顺序

  • 父类的静态变量、静态代码块
  • 子类的静态变量、静态代码块
  • 父类的非静态变量、非静态代码块、构造方法
  • 子类的非静态变量、非静态代码块、构造方法

类加载器

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长