JVM-类生命周期

生命周期 —— 五个阶段

1 加载
2 连接(验证 准备 解析)
3 初始化
4 使用
5 卸载

Loading加载阶段

1、类加载器根据全限定名通过不同渠道以二进制流的方式获取字节码信息
2、类加载器加载完后 jvm会将字节码信息保存在方法区 生成一个InstanceKlass对象 保存类的所有信息 里面还包含特定功能例如多态的信息
3、在中生成一份与方法区中数据类似的java.lang.Class对象

介绍


Linking 连接

验证:校验java字节码文件是否遵守《java虚拟机规范》中的约束 一般不需要程序员参与
准备:为静态变量分配内存并设置初始值 如果没有final修饰 则为初始默认值 0 false等 如果final修饰了 则直接在这里赋值
解析:常量池中的符号引用转换为指向内存的直接引用

介绍


初始化

执行静态代码块 为静态变量赋值 执行clinit部分的字节码指令
clinit静态代码块和静态变量赋值按照顺序 写在上面的先执行

以下几种方法会导致类的初始化
1、访问一个类的静态变量、静态方法. 如果是final修饰且等号右边为常量则不会初始化
2、调用Class.forName(String className)
3、new一个对象
4、执行Main方法的当前类


介绍


使用


卸载




面试题




面试题




面试题




面试题




面试题




面试题




面试题