java虚拟机的原理(虚拟机是怎样运行的,原理是什么)
本文目录
虚拟机是怎样运行的,原理是什么
虚拟机的运行:
指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
原理:
从最初编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(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服务器上运行更少的虚拟机—而不是购买高性能的磁盘阵列。关键在于针对虚拟机的负载分配足够多内存而且没有浪费。
参考资料:
百度百科-虚拟机
java的跨平台工作原理
首先我们要理解什么是跨平台,所谓的跨平台就是JAVA写的一份代码可以在任意的操作系统平台上运行。
为什么跨平台会成为一个问题呢?因为每一个操作系统平台支持不同的指令集我们所写的代码经过编译之后只能适用于一个平台,换一个平台就不支持了。而JAVA完美的解决了这个问题,JAVA是如何做到这一点的呢?在上图中我们可以看到JAVA代码执行的流程。
JAVA源代码-》JAVA字节码-》JVM解释执行
我们写的JAVA源代码会被编译为字节码,然后被JVM虚拟机解释执行,我们可以看到JVM虚拟机在跨平台的过程中发挥了重要的作用,就是由它解释字节码并执行的,对应于每一个平台都有一个JVM虚拟机,而字节码只有一份,windows的JVM虚拟机可以将字节码解释为能在windows平台上执行的指令并执行,Linux的JVM虚拟机可以将字节码解释为能在Linux平台上执行的指令并执行,他们执行的字节码都是同一份。这样就实现了跨平台。
更多文章:
php多行注释是/*.. */还是/**..**/呢?怎么注释掉PHP段落代码 下面的这一段落都要注释掉,不要了,怎么弄
2024年7月24日 17:55
java动态数组定义(java里有没动态二维数组概念,如何定义)
2024年6月28日 08:29
windows server 2008 r2镜像(求windowsserver2008 R2镜像,含USB3.0驱动)
2024年7月19日 04:45
h5小游戏开发需要多长时间_h5游戏一般是用什么开发的?开发一个小游戏软件都需要什么费用大概是多少怎样操作
2024年10月6日 01:05
conception什么意思(审美观为什么不用conception)
2023年10月19日 03:20
linux系统能ghost吗(Linux系统能用Ghost备份吗)
2024年6月27日 07:52
印度疫情为何突然消失(印度疫情活埋6000人视频 疫情为何突然控制住了)
2024年6月29日 13:53
dhtml的动态内容的作用是(谁知道DHTML由哪4各主要部分组成(动态网页设计方面))
2024年7月22日 10:45
javaee是干什么的(我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同)
2024年7月8日 07:45
typedef struct所有用法(typedef struct 用法是什么)
2024年6月29日 10:51