2012-08-16 221 views
2

我需要一步一步解释当我们调用java -jar JAR_FILE.jar时发生了什么,直到JVM完成其作业并返回。JVM生命周期?

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

+0

Java语言规范文档可以是一个很好的起点... – marathon 2012-08-16 21:59:23

+0

@ marathon-更具可读性个什么东西我见过Java规范,但我需要一个更清晰的规范!它深入细节。 – Reza 2012-08-16 22:09:15

+0

您可以查看本书:https://blogs.oracle.com/theaquarium/entry/java_performance_the_java_series。第3章提供了关于JVM内部的一些见解。 – 2012-08-16 22:25:55

回答

1

这是我的步骤清单,它是非常高的水平。

  1. JVM启动并且设置了该GC将管理各种存储区域,它也将安装一些系统线程
  2. 看jar文件清单,以确定已加载
  3. main方法的类
  4. 加载主类并验证刚加载的类中的字节代码是否正确,并且没有做任何违法操作。
  5. 解决正在加载的类需要什么类,并加载这些类正在加载的每个类经过步骤3和4
  6. 找到主方法的字节码并执行它。

这是一个非常简化的列表,完整的细节更具体,可能依赖于JVM的实现。

你可能想看看这本书里面的Java虚拟机第二版比JVM规范http://www.artima.com/insidejvm/ed2/

+0

谢谢兄弟!但是我需要更多关于第1步的细节:) – Reza 2012-08-17 14:16:08