java - JVM 生命周期?

标签 java jar jvm

我需要逐步解释当我们调用 java -jar JAR_FILE.jar 直到 JVM 完成其工作并返回时到底发生了什么。

该阶段如何为在主机上运行 JVM 做好准备?
调用了哪些函数?创建了哪些线程?
当 JVM 将要关闭时会发生什么?

最佳答案

这是我的步骤列表,级别很高。

  1. JVM 启动并设置 GC 将管理的各种内存区域,它还将设置一些系统线程
  2. 查看 jar 文件 list 以确定具有要加载的主要方法的类
  3. 加载主类并验证刚刚加载的类中的字节码是正确的并且没有做任何非法的事情。
  4. 解决被加载的类需要哪些类并加载这些类,每个被加载的类都要经过第 3 步和第 4 步
  5. 找到main方法的字节码并执行它。

这是一个真正简化的列表,完整的细节更加具体并且可能依赖于 JVM 实现。

您可能想看看这本书 Inside the Java Virtual Machine 2nd Edition 以获得比 JVM 规范更具可读性的内容 http://www.artima.com/insidejvm/ed2/

关于java - JVM 生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11995983/

相关文章:

java - Heroku 中的 Spring Boot 项目作为另一个本地 Spring Boot 项目的依赖项?

java - cf list 路径正则表达式问题

java - 仅使用类生成最小化的 jar

java - JDI:如何获取ObjectReference值?

java - Jade : java. lang.OutOfMemoryError: Java 堆空间

java - 如何修复错误 "Bad Operand Types for Binary Operator ' > =' first type: int[] second type int"

java - java中的protobuf是线程安全的吗?

java - Jetty 9.4 进行不必要的重定向

java - 如何从 github 树创建单个 jar 文件?

android - 在 Android 和 PC 之间序列化对象(Dalvik vs JVM)