说起Java虚拟机,大家都不会陌生,作为一名Java程序员,几乎每天都要编译、运行Java程序,跟Java虚拟机打交道,而且Java面试,几乎是躲不开Java虚拟机的问题。可我对下面几个问题一直有一些困惑:

  • 什么是Java虚拟机,Java虚拟机到底有什么作用;
  • 目前市面上有哪些Java虚拟机,我们工作中经常接触的有哪几款虚拟机;
  • Java虚拟机的系统架构是怎样的,有哪些模块组成;
  • Java虚拟机如何启动,Java虚拟机的工作流程是什么样的;

看到这些问题,多多少少总能说上一两句上来,但是距离系统、全面还是有些差距,所以也是想带着这些问题从宏观上去认识Java虚拟机。

JVM是什么

JVM是虚拟的计算机,有它自己的指令集、程序计数器,编译后的字节码可以在JVM上运行。Java语言在最初承诺的“一次编译,到处运行”,本质是因为JVM屏蔽了底层操作系统和机器的差异。

JVM是程序级别的虚拟机,像VMware属于系统级别的虚拟机。无论是程序级别的还是系统级别的虚拟机,运行在其上的软件都是限制在虚拟机提供的资源。

JVM体系结构

image.png

image.png

JVM启动流程

参考文献

jvm启动流程分析:https://cloud.tencent.com/developer/article/1038435
Java虚拟内存分析:https://www.jianshu.com/p/a4522d3224cc