什么是虚拟机? 模拟执行某种指令集体系结构的软件。我们常见的虚拟机有VMware,Java虚拟机(具体例如Android的Dalvik虚拟机),Javascript虚拟机V8等。
java虚拟机
基于栈的指令集体系结构,这里的栈是指“求值栈”(又叫做operand stack或者expression stack)。并不是我们常见的调用栈。
- 代码紧凑
- 方便实现高可移植性的解释器
- 直观方式解释较基于寄存器的体系结构慢
基于栈与基于寄存器的体系结构的区别。可以看到,这个有点儿像CPU中的RISC和CISC两种指令集体系结构的区别。
-
保存临时值的位置不同
- 基于栈:将临时值保存在“求值栈”上
- 基于寄存器:将临时值保存在寄存器中
-
代码所占的体积不一样
- 基于栈:代码紧凑,体积小,但所需代码条数多
- 基于寄存器:代码相对大,但所需代码条数少
Dalvik就是基于寄存器的java虚拟机实现。
摘自《JVM分享 Java Program in Action ――Java程序