JVM之类的生命周期
生命周期:类的加载->连接->初始化->使用->卸载
一、类的加载
查找并加载类的二进制数据(class文件)
硬盘上的class文件加载到JVM内存中
二、连接
1.验证
.class文件正确性校验
2.准备
static静态变量分配内存,并附初始化默认值
static int num = 10;在准备阶段,会把num = 0;之后修改为10;
在准备阶段,只有类没有对象
初始化顺序:static->非static->构造方法
public class student{
static int age;//准备阶段,age = 0;
String name;
}
3.解析:把类中的符号引用转为直接引用。
前期阶段,还不知道类的具体内存地址,只能使用“com.ruangong.pojo.student”来替代student类,“com.ruangong.pojo.student”就称为符号引用。
在解析阶段,JVM就可以将“com.ruangong.pojo.student”映射成实际的内存地址,然后就用内存地址来代替student,这种使用内存地址来使用类方法称为直接引用。
三、初始化阶段:给static变量赋予正确的值
static int num = 10;
四、使用:对象的使用、对象的垃圾回收、对象的销毁
五、卸载
JVM结束生命周期的时机:
1.正常结束
2.异常结束/发生错误
3.system.exit() 手工结束
4.操作系统异常