1.类加载机制
- 通过classloader将二进制的文件加载到内存中(加载)
- 验证class文件是否符合JVM的规则眼球(验证)
- 初始化静态变量,给静态变量赋JVM的初始值(准备)
<br>
正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配。仅仅是静态变量,实例变量是在对象实例化随对象一起分配在堆中。
通常情况下,为默认值:public static int value = 12,此时准备阶段过后初始值为0,而不是12,而将value赋12的指令是在程序被编译后,放在类构造器<clinit>()方法中,这一步在初始化阶段才会被执行。
为什么是一般,如果加了final属性,则编译会把该字段添加ConstantValue属性,这样在准备阶段就会设置为12。
- JVM将常量池中的符号引用改为直接引用过程(解析)
- 对静态变量进行初始化,赋代码程序设定的初始值(初始化),初始化之后便可以对类进行正常使用了
- 程序正常结束,或者程序出错,或者系统错误,或者执行了System.exit()方法, 程序生命周期就会结束了