为什么应用在Android5.0系统以上运行的更快

权限管理不同

随着Android系统版本的升级,google对开发者的权限申请越来越严格,而且后台进程管控越来越严格。

例如:前几年过年有很多开发者会让应用在设备上一直存活不退出(传说的“保活”)

底层机制不同

这是最重要的区别

5.0之前底层使用Dalvik虚拟机;
5.0之后底层使用Android Runtime;

Dalvik

Dalvik是一个处理器虚拟机。
用Java写的Android程序,首先被编译成Java虚拟机的字节码,然后再转换为Dalvik的字节码。Java虚拟机的字节码存放在.class文件中,Dalvik字节码存放在.dex(Dalvik EXecutable)和.odex(Optimized Dalvik EXecutable)文件中. Dalvik的可执行文件,是专为对内存和处理器有限制的系统设计的。

  • 运行原理
    其中的即使编译器(trace-based just-in-time (JIT) compilation),在应用每次启动时,持续性的分析和动态的将频繁执行的简短字节码片段翻译为本地机器码。剩余的字节码,则由Dalvik解释执行。

Android Runtime

Android Runtime (ART) 是Android操作系统使用的应用运行环境。 是Android 上的应用和部分系统服务使用的托管式运行时。

  • 运行原理
    程序安装时,使用提前编译器(ahead-of-time(AOT) compilation)直接把dex字节码文件转为本地机器码,运行时不用再转换。

  • 通过移除Dalvik解释器和trace-based JIT编译器,ART大大提高了应用的执行效率和减少了电量的消耗。同时,还提高了内存分配和垃圾回收机制,增加了新的应用调试功能和对应用更精准的高层分析。 (如果提高内存分配和垃圾回收机制, 请读者自行参考Android官网文档)

  • 缺点: 增加了应用的安装时间和占用手机上更多的flash空间。

点赞