什么是Dalv ik 虚拟机? Google 于2007 年底正式发布了Android SDK, 作为 Android 系统的重要特性,Dalvik 虚拟机也第一次进入了人们的视野。它对内存的高效使用,和在低速 CPU 上表现出的高性能,确实令人刮目相看。依赖于底层 Posix 兼容的操作系统,它可以简单的完成进程隔离和线程管理。每一个 Android 应用在底层都会对应一个独立的Dalvik 虚拟机实例,其代码在虚拟机的解释下得以执行。 很多人认为Dalvik 虚拟机是一个 Java 虚拟机,因为Android 的编程语言恰恰就是Java 语言。但是这种说法并不准确,因为Dalvik 虚拟机并不是按照 Java 虚拟机的规范来实现的,两者并不兼容;同时还要两个明显的不同: Java 虚拟机运行的是Java 字节码,而 Dalvik 虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable)。 在 Java SE 程序中的Java 类会被编译成一个或者多个字节码文件(.class)然后打包到 JAR 文件,而后 Java 虚拟机会从相应的CLASS 文件和 JAR 文件中获取相应的字节码;Android 应用虽然也是使用Java 语言进行编程,但是在编译成 CLASS 文件后,还会通过一个工具(dx)将应用所有的CLASS 文件转换成一个 DEX 文件,而后 Dalvik 虚拟机会从其中读取指令和数据。 Dalv ik 和 Android 系统 Android 作为新一代的基于Linux 的开源手机操作系统,其系统架构由下而上可以分为以下几部分: 1. Linux 内核 2. 本地库 3. Android 运行库 4. 应用框架 5. 应用 图表1 如图所示,Android 运行库包括两部分:核心库和Dalvik 虚拟机。核心库包括了最基本的类库,如data structure, network, Utilities, File system 等的,很多实现代码都是来自 Apache Harmony项目,主要目的是保证虚拟机的类库能够和Java SE 的类库最大可能的兼容,从而降低应用开发者从 Java SE 阵营转移到 Android 开发阵营的难度,增加其可用性。Dalvik 虚拟机主要是完成对象生命周期的管理,堆栈的管理,线程管理,安全和异常的管理,以及垃圾回收等等重要功能。 Dalv ik 虚拟机的主要特征 Dalvik 虚拟机非常适合在移动终端上使用,相对于在桌面系统和服务器系统运行的虚拟机而言,它不需要很快的CPU 速度和大量的内存空间。根据 Google 的测算,64M 的 RAM 已经能够令系统正常运转了。其中 24M 被用于底层系统的初始化和启动,另外 20M 被用于高层启...