计算机系统通常由CPU, 内存,存储,网卡等硬件等构成,计算机是建立在这些硬件之上的,有了这些硬件才能构成一台完整的计算机。
虚拟机(Virtual Maching)就是虚拟出来的计系统,或者可以说是模拟出来的计算机系统。虚拟机依赖虚拟机管理程序(或者叫做虚拟机控制程序),虚拟机管理程序负责将宿主计算机的资源(内存,CPU,网络等等)映射到虚拟机的虚拟资源(内存,CPU,网络等等)。
通过上面的对比可以知道,计算机是有实实在在的硬件系统的,但是虚拟机是没有的,虚拟机的硬件系统都是将宿主机(安装虚拟机的计算机)的硬件系统虚拟出来的。这里可能比较抽象,我们可以举一个例子,计算机进行计算,直接使用自己的CPU来计算就行;但是虚拟机进行计算的话,虚拟机是没有自己的实际硬件CPU的,因此虚拟机的计算只有发到其宿主计算机的CPU上来计算。
JVM运行原理
1.加载字节码:类加载器将字节码文件加载到JVM内存中。
2.初始化类:对类的静态字段进行初始化,并执行静态代码块。
3.调用主方法:创建一个线程,调用程序的主方法(main方法)。
4.执行字节码:执行引擎解释执行字节码,可能涉及到对象创建、方法调用等操作
5.垃圾回收:垃圾回收器定期回收不再使用的对象,释放内存空间。
6.即时编译:即时编译器将热点代码编译成本地机器码,提高执行效率。
7.本地方法调用:如果程序需要调用本地方法,JVM会通过JNI(Java Native Interface)调用相应的C/C++函数。