android虚拟机和java虚拟机的区别

 

 

Dalvik和JVM的几点区别

     1、Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。

     2、Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。

     3、Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。

     4、不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex,ex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。

     5、所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制

 

基于平台不同:Dalvik基于寄存器,而JVM基于栈,KVM基于栈 

运行环境不同:在有限的内存,允许同时运行多个Dalvik实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。 

              JVM只能运行一个JVM实例,JVM因平台的不一样进程也不一样。 

              KVM只能一个实例运行。 

运行语言:    Dalvik可以运行不同的语言,如java和Scala。 

              JVM可以运行不同的语言,如java和Python语言 

              KVM运行j2me语言 

运行格式不同:JVM一般是.class,Dalvik是.dex,KVM一般是.class 

编写语言:Dalvik是一般由C或C++编写,JVM一般是C++或java编写,KVM一般是C或C++ 

效率不同:Dalvik是基于寄存器所以效率高于基于栈的JVM,KVM 

加载函数不同:Dalvik是Dexfile加载class类文件,JVM和KVM是ClassLoader 

 

 

http://www.zhihu.com/question/20207106

 

 

你可能感兴趣的:(android,java)