当前位置:首页 > 虚拟机 > 正文

java虚拟机的生命周期


一、简述jvm的理解1、Java虚拟机和程序的生命周期
(1):程序正常执行后,进程终止
(2):()方法终止程序执行,传入参数为0,代表正常退出
(3):程序异常或错误导致虚拟机进程退出
(4):操作系统错误导致虚拟机进程退出
2、类加载、连接和初始化
(1)加载:查找并加载磁盘上的.class文件(字节码文件、二进制数据)到内存中
(2)连接:
1验证:验证加载的类的准确性
2准备:为类的静态变量分配内存并初始化为默认值(此时a的值为0)
3:转换符号引用在类中可以直接引用
(3)初始化:给类的静态变量赋正确的初始值(此时a的值为3)
publicclasstest{
privatestaticinta=3;
}
3Java程序可以通过两种方式使用类:主动使用和被动使用Java程序的第一次。。
二、类加载的生命周期

类型(一般指类或接口)从加载到虚拟机内存到从内存中卸载的整个生命周期会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段,包括验证、准备和解析三个阶段,通过连接连接在一起。

其中加载、验证、准备、初始化、卸载五个步骤定义了顺序,加载过程的类型必须遵循这个顺序。(加载和连接交错,加载总是在连接之前开始)。

解析位置不固定。在某些情况下,它可以在初始化阶段之后启动,以支持Java语言的运行时绑定(还有动态绑定和扩展绑定)。

Java虚拟机规范并没有规定什么情况下应该启动第一步类加载过程,这可以由虚拟机实现自由控制。

初始化阶段严格建议只有六种情况应该立即初始化类:

对于这六种触发类初始化的情况,是有行为的。据说很活跃。另外,所有引用方法都不会触发初始化,称为被动指针。
以下三种场景是被动功能的典型场景:

除非接口被初始化,否则在使用类时不应初始化其所有父接口。