![]() |
1
11
jvm与virtualbox或vmware虚拟机的意义不同。它是实现Java字节码的“机器”,而不是实际硬件的虚拟化版本。 艺术术语“虚拟机”是很久以前为以下场景创造的:
当这个虚拟机运行时,它是一个完全普通的程序,完全以用户模式运行。它不需要硬件或操作系统的特殊帮助就可以正常工作。JVM尤其如此,因为Java字节码不处理低级硬件I/O或其他难以模拟的事物。 后来,在历史上(为了选择一个特定的实例),IBM发明了VM/370。VM/370使用了术语“虚拟机”的另一种含义。在稍后的意义上,硬件和操作系统协作,允许单个物理机承载(或多或少)的多个虚拟实例。 相同的 一种体系结构,在这种体系结构中,整个操作系统的多个副本被写入,就好像它们在或多或少的裸硬件上运行一样。后来,x86被设计成具有促进这一点的功能。 所以,是的,任何虚拟机都在利用一些物理硬件,除非你用一张纸绕桌子来实现它(PaceJohnSearle)。但是,当虚拟机与它运行的机器没有任何相似之处时,就不需要操作系统和硬件的特殊帮助,也不需要像VM/370或VMware这样复杂的东西。 |
![]() |
2
3
让我在那儿拦住你:—) 在概念上,JVM(软件虚拟化)和(例如)VMware VM(硬件辅助虚拟化)之间存在差异。 JVM(以及其他基于软件的虚拟机,例如允许在Solaris硬件上模拟x86的虚拟机——我认为Bochs和Dosbox可能属于这一类)与其他任何应用程序一样运行,使用操作系统访问硬件,或仅在软件中模拟自己的硬件。 vmware和其他针对速度进行了优化的vmms依赖于硬件支持。换言之,他们在硬件上运行,就好像他们完全可以访问硬件一样,只有当他们试图做一些不应该做的事情时,操作系统才会捕获并伪造这种尝试。 这就是为什么vmware的运行速度比纯软件模拟器快得多。这是因为,在绝大多数情况下,它实际上是在真正的硬件上运行的。 |
![]() |
3
1
JVM是一个虚拟机,但它不需要操作系统提供任何额外的支持。它不是为特定CPU虚拟化指令,而是执行Java字节码。 |
![]() |
4
1
JVM是一个运行Java的虚拟机,换句话说,它模拟了一个能够运行Java的机器。这是一个令人困惑的名称选择,但它来自“机器”的一般含义,而不是更常见的虚拟机含义。 JVM像一个规则的VM仿真指令的执行,但是在JVM的情况下,被仿真的指令是Java指令,而在VM的情况下,它们是由在同一硬件上运行的OS执行的硬件指令。 |
![]() |
5
1
是的,jvm确实访问硬件,但是这就是为什么安装Mac或Windows jvm的原因,因为指令由jvm翻译并根据安装的jvm进行操作,例如,Mac上的“打开文件”对话框打开Mac对话框,Windows jvm打开Windows对话框。 所以它不是由系统虚拟化的,而是由您安装的JVM虚拟化的字节码。它基本上就像一个应用程序,它读取一些东西(字节码)并做一些事情(访问硬件或其他东西)。 |
![]() |
6
0
应该注意的是,没有任何规定规定JVM 不 (必须)具有硬件虚拟化访问权限。有明显的例外,但回答的海报暗示,很少有CPS本身运行Java字节码存在。也许有一天,Java字节码HAL或TIMI会很常见,将JVM与形式化的HW虚拟化放到同一个类中? |
![]() |
Sam · jvm如何优化循环代码? 7 年前 |
![]() |
pushpavanthar · 纱线中的调谐火花作业 7 年前 |
![]() |
Ashish K · 在Groovy中将字符串参数传递给对象方法参数 7 年前 |
![]() |
St.Antario · 在Java中侦听多个目录以创建文件 7 年前 |
![]() |
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 7 年前 |