当前位置:首页 > 虚拟机 > 正文

java虚拟机工作流程讲解


一、Java程序的运行机制是怎么样的?

Java程序的执行机制可以分为以下几个步骤:

编写Java源代码:首先,程序员必须使用Java编程语言编写源代码。Java源代码是扩展名为.java的文本文件,其中包含Java程序的逻辑和功能。

编译Java源代码:要生成字节码文件,必须通过Java编译器编译Java源代码。字节码文件是扩展名为.class的二进制文件,其中包含Java程序的指令、变量和方法。

字节码文件的解释和执行:Java虚拟机(JVM)负责解释和执行字节码文件。JVM是一种虚拟计算机,它模拟真实计算机的硬件和操作系统,可以执行字节码文件。

类加载:Java程序运行时,JVM根据需要动态加载所需的类。Java类库和用户定义的类都被加载到内存中。

Java程序执行:JVM根据程序的逻辑和功能来执行Java程序。程序员可以在程序中使用Java类库和用户定义的类提供的方法和变量。

垃圾收集:JVM还负责垃圾收集,自动回收不再使用的内存空间,防止程序出现内存泄漏等问题。

编译生成字节码文件->解释并执行字节码文件->加载所需的类->执行Java程序-。>垃圾收集。


二、虚拟机是怎样运行的,原理是什么?

虚拟机的运行:

指具有完整的硬件系统功能、通过软件模拟、在完全隔离的环境中运行的完整计算机系统。

原理:

如何一步步执行原来写好的Java源文件(.java文件),如下,首先是JavaSource文件通过前端。编译器(javac或ECJ)将.java文件编译为Java字节码文件。

然后JRE将Java字节码文件加载到系统分配给JVM的内存区域中,然后执行引擎解释或编译该类文件,然后即时编译器将字节码转换转换成机器码。

高级信息:

虚拟机资源包括很多方面:CPU、内存、网络和磁盘。规划虚拟机时应考虑这些资源之间的关系。否则,资源分配不当将导致虚拟机内的应用程序性能不佳。

CPU:

虚拟机的每个vCPU仅运行在一个物理核心上。CPU频率越高,虚拟机变得越快,更多的vCPU有助于提高应用程序性能。

一个更复杂的因素是,在ESXi服务器中,所有虚拟机共享物理CPU的使用率。ESXi服务器拥有的核心越多,每个vCPU获得的核心份额就越大。因此,多核的性能比核心频率高但数量少时要好。

如果虚拟机需要使用大量CPU时间,可以考虑为虚拟机分配第二个vCPU。然而,为虚拟机分配两个以上的vCPU并不一定会导致运行速度更快,因为只有线程应用程序才能有效地使用多个vCPU。

RAM:

ESXi服务器上的RAM资源通常是有限的,因此在为虚拟机分配RAM时需要特别小心。VMkernel在处理RAM方面非常聪明;它允许虚拟机使用ESXi服务器的所有物理内存,并尝试避免在未实际使用的情况下使用物理内存。

物理内存完全耗尽后,VMkernel必须确定哪些虚拟机可以保留物理内存以及哪些虚拟机必须释放物理内存。这称为“内存回收”。当虚拟机占用的物理内存被回收时,存在影响虚拟机性能的风险。从虚拟机回收的内存越多,相关风险就越大。

最明智的做法是只分配虚拟机运行所需的内存。分配额外的内存会增加捕获的风险。另一方面,如果虚拟机操作系统使用未使用的内存作为磁盘缓存,那么磁盘系统的性能要求将会显着降低,因此这里存在一个权衡问题

对于数据库服务器和VDI桌面来说,为虚拟机分配更多内存从而在ESXi服务器上运行更少的虚拟机通常比购买高性能磁盘阵列更具成本效益。关键是为虚拟机工作负载分配足够的内存而不浪费它。

参考资料:

-虚拟机

上一篇:2元vps

下一篇:java虚拟机jvm的功能