我们都知道Java程序与其他面向对象语言(C++)的主要区别是一次编译跨平台运行,自动内存管理,自动垃圾回收等功能。这些功能都得益于Java提供的一种叫做JVM的东西,JVM到底是什么,为什么能做到,下文进行详细描述。

JVM是什么

JVMJava Virtual Machine的缩写,即Java虚拟机,一说起虚拟机,我们首先会想到的是诸如VMware、VisualBox等虚拟机软件,用于创建隔离主机系统的子系统。同样,JVM也是根据一定的规范,来虚构出来的一个子系统用来运行Java字节码,各个平台实现自己的虚拟机,因此,针对同一份Java字节码,可以做到不同的平台都能运行,因为JVM隔离了Java程序与底层的直接操作,将字节码解释编译成对应平台的机器指令执行。
注:规范中规定了Java字节码的二进制文件格式,及各种Java指令的作用。

JVM整体结构

如下图:
图片来源:JavaKeeper

copy.png