jvm显然就是程序虚拟机,而不是系统虚拟机。
从OS角度去看,虚拟机就是一个进程,一个软件,我们所有的java程序都是跑在这个软件上面的,这个软件会发出机器指令给操作系统,然后达到操作硬件的目的。既然是一个软件,那么这软件就是跑在内存上面的。我们所有讲述的东西,都是一个内存上叫做JVM的进程模拟出来的。里面的栈、堆、方法区等等概念,都是这个软件在内存上自我划分的概念,而不是操作系统划分的概念,因此这台机器叫做虚拟机,是虚拟出来的一台机器,在OS看来,这就是一个平平无奇的进程。
上面这张图比较省略,下面这张图更为详细一些:
上面讲到把JVM放入内存中,好像就像画的那样JVM直接占内存条的一段,其实不是这样的,这是抽象的表示方法,是为了忽略掉与整体无关的细节。
Java、JVM以及内存之间的关系: