剑指JVM:虚拟机实践与性能调优
上QQ阅读APP看书,第一时间看更新

1.9 JVM的生命周期

JVM的生命周期包含三个状态:JVM的启动、JVM的执行和JVM的退出。

JVM可以通过Java命令启动,接着通过引导类加载器(Bootstrap Class Loader)加载类文件,最后找到程序中的main()方法,去执行Java应用程序。

JVM的执行表示一个已经启动的JVM开始执行Java程序。JVM通过main()方法开始执行程序,程序结束时JVM就停止。执行一个Java程序的时候,真正在执行的是一个叫作JVM的进程,通常情况下,一个Java程序对应一个JVM进程。

JVM的退出有如下几种情况。

(1)Java应用程序正常执行结束,即当所有的非守护线程执行结束。

(2)Java应用程序在执行过程中遇到了异常或错误而异常终止,比如发生内存溢出导致程序结束。

(3)由于操作系统出现错误而导致JVM进程终止,比如机器宕机。

(4)用户手动强制关闭JVM,比如使用kill命令。

(5)某线程调用Runtime类或System类的exit()方法。

除此之外,JNI(Java Native Interface)规范描述了用JNI Invocation API来加载或卸载JVM时JVM的退出情况。