java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JVM的生命周期

解读JVM的生命周期是怎么样的

作者:冰糖心书房

JVM的生命周期包括启动、运行和终止三个阶段,启动阶段包括创建JVM实例、加载和初始化核心类库、加载main方法所在的类和初始化类,运行阶段包括执行main方法、类加载、字节码执行、内存管理、线程管理和异常处理,终止阶段包括正常终止、异常终止和外部终止

JVM的生命周期是怎么样的

JVM 的生命周期是指 JVM 实例从启动到终止的整个过程。

一个 Java 应用程序通常对应一个 JVM 实例(除非使用 JNI 等技术在同一进程中创建多个 JVM 实例,但这并不常见)。

JVM 的生命周期阶段

启动 (Startup)

运行 (Execution)

终止 (Termination)

正常终止:

异常终止:

外部终止:

钩子 (Shutdown Hooks):

总结流程图

+----------------+
|    启动 JVM     |  (java 命令)
+----------------+
        |
        V
+----------------+
|  加载和初始化    |
|  - 查找并加载 JDK |
|  - 创建类加载器   |
|  - 加载 main 类   |
|  - 初始化类      |
+----------------+
        |
        V
+----------------+
|    运行程序     |
|  - 执行 main 方法|
|  - 类加载       |
|  - 字节码执行    |
|  - 内存管理     |
|  - 线程管理     |
|  - 异常处理     |
+----------------+
        |
        V
+----------------+
|    终止 JVM     |
|  - 正常终止      |
|  - 异常终止      |
|  - 外部终止      |
|  - 执行钩子函数   |
+----------------+

代码示例 (演示钩子函数)

public class JVMLifecycle {

    public static void main(String[] args) {

        // 注册钩子函数
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            System.out.println("JVM 即将终止,执行清理操作...");
            // 在这里执行清理操作 (例如,关闭数据库连接、释放资源等)
        }));

        System.out.println("程序开始执行...");

        // 模拟程序运行一段时间
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("程序执行完毕...");

        // 可以选择显式退出 (也可以不调用 exit,让程序自然结束)
        // System.exit(0);
    }
}

运行结果:

程序开始执行...
程序执行完毕...
JVM 即将终止,执行清理操作...

注意:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文