<clinit> : class initialization

字节码中的一块标记,由类变量和静态代码快代码指令组成。



一、只要有类变量和静态代码块存在,字节码中就会自动生成<clinit>方法;

JVM - 【字节码】<clinit>

JVM - 【字节码】<clinit>

JVM - 【字节码】<clinit>

二、类变量和静态代码块的执行顺序

class文件进入“classLoader SubSystem”后会经过三个步骤:

  • 加载(Loading)
    • 将class文件映射为内存中的Class类
  • 链接(Linking)
    • 检查Class是否合法
    • 完成类变量的初始化(为类变量分配内存,初始化为默认值)
    • 将Class中的静态链接转换为实际链接
  • 初始化(Initialization)
    • 完成对变量的赋值

JVM - 【字节码】<clinit>

JVM - 【字节码】<clinit>

 

 

 

JVM - 【字节码】<clinit>

相关文章:

  • 2022-12-23
  • 2021-04-08
  • 2022-01-16
  • 2021-09-21
  • 2022-02-12
  • 2021-12-26
  • 2021-07-07
  • 2021-09-22
猜你喜欢
  • 2021-07-11
  • 2022-03-04
  • 2022-12-23
  • 2022-12-23
  • 2021-10-04
  • 2022-12-23
相关资源
相似解决方案