JVM - 【字节码】<clinit>

<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>