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.操作系统异常

 

posted @ 2020-12-13 15:49  Double晨  阅读(96)  评论(0编辑  收藏  举报