虚拟机通常只VMwareMicrosoft Virtual PC等工具,可以用他们来模拟PC,你可以在虚拟机里面装上Windows XP来研究各种病毒而不必担心会感染真正的系统,也常用来学习Linux虚拟机的硬盘在你真正的系统上是一个或者几个文件,备份还原转移都很方便。
模拟器通常指模拟以前的游戏机的程序,用它们可以玩很多以前经典的游戏,比如红白机模拟器PS模拟器、GBA模拟器,这样我们就可以在电脑上玩一些经典的游戏了。比如街霸超级玛丽拳皇合金弹头宠物小精灵之类的
从本质上讲,虚拟机和模拟器没有区别,他们都是用PCCPU内存和硬盘空间来模拟出一个新的环境,只是他们模拟的环境不一样而已。在实际的使用中,因为模拟器仅仅用于玩游戏,而虚拟机可以很方便的让你在一个Windows XP中体验诸多其它的系统,所以很多人就觉得虚拟机比模拟器强大。殊不知模拟一个PS2/PSP的环境比模拟一个XP难上千倍,因为要模拟出不同架构的环境,虚拟的效率极低,目前的电脑尚达不到性能上的要求。
上面对虚拟机的各个部分进行了比较详细的说明,下面通过一个具体的例子来分析它的运行过程。
  虚拟机通过调用某个指定类的方法main启动,传递给main一个字符串数组参数,使指定的类被装载,同时链接该类所使用的其它的类型,并且初始化它们。例如对于程序:
  public class HelloApp {
  public static void main(String[] args){
  System.out.println("Hello World!");
  for (int i = 0; i < args.length; i++ ) {
  System.out.println(args);
  }
  }
  }
  编译后在命令行模式下键入:java HelloApp run virtual machine
  将通过调用HelloApp的方法main来启动java虚拟机,传递给main我的世界java模拟器一个包含三个字符串"run""virtual""machine"的数组。现在我们略述虚拟机在执行HelloApp时可能采取的步骤。
  开始试图执行类HelloAppmain方法,发现该类并没有被装载,也就是说虚拟机当前不包
含该类的二进制代表,于是虚拟机使用ClassLoader试图寻这样的二进制代表。如果这个进程失败,则抛出一个异常。类被装载后同时在main方法被调用之前,必须对类HelloApp与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。