JVM之二 JVM实例生命周期和对象的生命周期

 

JVM实例生命周期和对象的生命周期

JVM实例负责运行一个Java程序。当启动一个Java程序时,一个JVM实例也就产生。当该程序关闭退出,这个JVM实例也就随之消亡。

 

Java虚拟机及程序的生命周期

(1)通过java命令运行一个Java程序时,启动一个Java虚拟机进程;

(2)Java虚拟机进程从启动到终止的过程,称为Java虚拟机生命周期;

(3)程序生命周期和Java虚拟机生命周期是一致的,因为Java虚拟机进程从创建起的任务就是执行Java程序。

类的加载,连接和初始化

 

Java程序要使用某个类时,Java虚拟机要确保这个类被加载,连接和运行,其中连接包括验证,准备和解析。

 

1、装载:查找并加载类的二进制数据;

装载的最终目标是实现将编译后的class文件(class文件采用字节码,是JVM的机器语言)装入内存运行时数据区的方法区中,并在内存运行时数据区的堆区生成一个class对象,这个对象可以引用到方法区中的类定义

 

2、连接

  (1)验证:确保加载类的正确性;

  (2)准备:为静态变量分配内存,并将其初始化为默认值;

  (3)解析:将类中的符号引用转换为直接引用。

 

3、初始化:

       类的初始化过程是执行类的初始化语句,包括静态变量的声明语句,以及静态代码块,静态代码块的作用即是为静态变量赋初始化值。

 

4、卸载

只有没有任何引用指向Class对象的时候,这时候才会卸载类,结束类的生命周期。

JVM之二 JVM实例生命周期和对象的生命周期