Android 从5.0开始默认使用ART虚拟机执行程序,抛弃了Dalvik虚拟机.加快了Android的运行效率,提高系统的流畅性

原因是Dalvik虚拟机执行的是dex字节码,ART虚拟机执行的是本地机器码, Dalvik虚拟机有一个解释器,用来执行dex字节码, Android从2.2开始,通过JIT(Just-In-Time)进行Dalvik虚拟机的优化,将使用频率较高的字节码翻译成机器码,就可以有效地提高Dalvik虚拟机的执行效率。但即使用采用了JIT,Dalvik虚拟机还是比不上ART虚拟机,因为Dalvik翻译工作是在程序运行时的,而ART在APK在安装时就对其包含的Dex字节码进行翻译,得到对应的本地机器指令,于是就可以在运行时直接执行了。

安装:

Android系统通过PackageManagerService来安装APK,在安装的过程,PackageManagerService会通过另外一个类Installer的成员函数dexopt来对APK里面的dex字节码进行优化,对Dalvik虚拟机来说只进行dex字节码的优化,而ART虚拟机将dex字节码翻译成本地机器码,注意的是两种虚拟机不管事字节码的优化还是翻译成机器码都会生成一个后缀是odex文件,只不过ART的是一个oat类型文件,什么是oat文件(不清楚,好像是Linux的文件)

启动:

Android系统在启动的时候,会创建一个Zygote(受精卵,)进程,一切进程产生的一个进程。Zygote进程在启动的过程中会创建一个Dalvik虚拟机(或是ART虚拟机)。Zygote进程是通过复制自己来创建新的应用程序进程的,他会连同虚拟机一并复制可以大大提高系统的启动速度,就像单例一样,不用再为每个进程new一个,而且每个应用进程所需要的虚拟机也都是直接拿来就可以了.

更多相关文章

  1. android:maxLength="" 设置字数限制无效
  2. Android(安卓)iOS测试区别
  3. 关于android开机速度性能方面
  4. Android(安卓)AIDL进程IPC通信 一次就好
  5. Android内核开发:学会分析系统的启动log
  6. [转]自己整理的android入门QA表,希望能帮到一些人
  7. Android从开机到打开第一个应用发生了什么?
  8. 第一章 Android系统介绍
  9. Genymotion - 速度飞一般的Android虚拟机

随机推荐

  1. android有用的知识
  2. 技术|Android安装包优化
  3. Android开发实践 带你理解使用WebView
  4. android支持的视频音频硬解码器
  5. Android核心分析(20)----Android应用程序
  6. android -> 修改自动转为大写 的textAllC
  7. Android中如何设置RadioButton在文字的右
  8. Android(安卓)start from now on
  9. android对话框大全
  10. Android: INSTALL_FAILED_UPDATE_INCOMPAT