Java一个类的生命周期
分为五个阶段 —> **加载 - 连接 - 初始化 - 使用 - 卸载**
- 加载
- 连接
- 验证
- 准备
- 解析
- 初始化
- 使用
- 卸载
加载
加载阶段是将Java的文件编译成class文件
jvm将class文件中的二进制数据读入内存,放入方法区
将最终创建class对象连接
连接阶段分为三个小阶段:验证 - 准备 - 解析
验证
比如:验证字节码格式是否正确
变量和方法是否有重复
继承和实现是否符合标准
准备
解析
初始化
执行静态变量初始化和静态java代码块
并初始化程序员设置的变量值
使用
直接引用
会触发类的初始化
比如new一个实例对象,访问和设置静态变量,访问类的静态方法,反射,启动类的入口main方法
间接引用
卸载
不存在该类的任何实例了,加载该类的对象已经被回收
java.class没有任何被引用,无法在任何地方通过反射访问该类的方法