JVM - 【字节码】<clinit>
<clinit> : class initialization
字节码中的一块标记,由类变量和静态代码快代码指令组成。
一、只要有类变量和静态代码块存在,字节码中就会自动生成<clinit>方法;
二、类变量和静态代码块的执行顺序
class文件进入“classLoader SubSystem”后会经过三个步骤:
- 加载(Loading)
- 将class文件映射为内存中的Class类
- 链接(Linking)
- 检查Class是否合法
- 完成类变量的初始化(为类变量分配内存,初始化为默认值)
- 将Class中的静态链接转换为实际链接
- 初始化(Initialization)
- 完成对变量的赋值