JVM,Dalvik,我们每天都在和他们打交道,可是我们真的了解他俩吗?
提到他俩可以追溯到sun和Google的官司,感兴趣的小伙伴可以自行百度哈。
现在我们先对他俩做一个比较:
DVM将许多.class文件变成一个.dex文件,速度更快。
在架构方面,寄存器(CPU)速度肯定比普通内存(如栈)快。
和sun的版权问题促进DVM的诞生。
然后补充一下对两者的基本认识和ART模式:
Java虚拟机(JVM)是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它有自己完善的硬件架构(如处理器、堆栈、寄存器等),还具有相应的指令系统。使用“Java虚拟机”程序就是为了支持与操作系统无关、在任何系统中都可以运行的程序。
Dalvik虚拟机是Android程序的虚拟机,是Android中Java程序的运行基础。其指令集基于寄存器架构,执行其特有的文件格式——dex字节码来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。它的核心内容是实现库(libdvm.so),大体由C语言实现。依赖于Linux内核的一部分功能——线程机制、内存管理机制,能高效使用内存,并在低速CPU上表现出的高性能。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
一个应用,一个虚拟机实例,一个进程!!!
每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。每个进程之间可以通信(IPC,Binder机制实现)。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。
不同的应用在不同的进程空间里运行,当一个虚拟机关闭或意外中止时不会对其它 虚拟机造成影响,可以最大程度的保护应用的安全和独立运行。
DVM的优势:
1、在编译时提前优化代码而不是等到运行时;
2、 虚拟机很小,使用的空间也小;被设计来满足可高效运行多种虚拟机实例;
3、常量池已被修改为只使用32位的索引,以简化解释器。
ART模式:
ART模式英文全称为:Android runtime,谷歌Android 4.4系统新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验,对于大家来说,只要明白ART模式可让系统体验更加流畅,不过只有在安卓4.4以上系统中采用此功能。