前言
想要分析一个项目的源码,首先要知道这个项目的目录结构,然后再根据结构进行拆分分析,HotSpot在解压后发现,主要由四个子目录组成了整个项目
- agent:包含了Serviceability Agent 的 客户 端 实现;
- make:包含了用户build出HotSpot的各种组件
- src:最重要的目录,包含了源码实现,如果说cpu实现,操作系统实现,与平台无关性实现
- test:包含了一些测试用例
下面是HotSpot的结构图(注:摘取子java虚拟机精讲)
Launcher简介:
Launcher是一种用于启动jvm进程的启动器,具体可以划分为两种,也就是我们在windows下面使用的java. exe 和 javaw. exe 程序,他们的区别就是是否会保留控制台并打印程序的输出信息,它的具体使用方法可以使用-help来进行
Launcher销毁虚拟机
在执行完成主进程之后,虚拟机会与其断开连接,然后等待所有的非守护进程结束之后,将jvm虚拟机进行销毁,注意:在程序中,可以显示的使用System.exit(0)对jvm进行显示的销毁,这也是如果使用了System.exit(0)之后,finally块中的语句会停止执行的原因,但如果显示的使用了System.exit的话,Launcher就不会在调用销毁jvm的函数了