概念介绍
关于JVM的知识之前已经介绍过了,这里主要介绍安卓虚拟机。
安卓架构的一部分叫做安卓运行时,也就是安卓运行时环境,包括两部分,一部分是安卓的核心类库,另一部分是Dalvik虚拟机。
安卓之所以开发Dalvik虚拟机而不是JAVA自带的JVM,可能是基于以下两点考虑:
版权问题:如果使用JVM,就涉及到版权问题,所以谷歌需要在JVM的基础上做一些改进,创建自己的虚拟机。
性能问题:jvm虚拟机对于Java开发有足够的性能,但与移动平台低内存、低功耗的特点相比,似乎有些牵强。因此,为了优化虚拟机的工作效率,谷歌为安卓开发了自己的虚拟机。
JVM和Dalvik的区别
JAVA虚拟机运行JAVA字节码,Dalvik虚拟机运行Dalvik字节码
Java虚拟机:JAVA->类文件
Dalvik虚拟机:JAVA->类文件->Dalvik字节码->打包成DEX ->DVM通过解释DEX文件来执行这些字节码。
这里的dex文件是安卓系统的可执行文件,可以进一步将dex提取到odex中。odex相当于预读dex,这会占用更多内存,但程序运行速度会更快。
达尔维克与艺术的区别
自安卓5.0版本以来,安卓运行时已经取代达尔维克成为系统中的默认虚拟机。
概念
Dalvik虚拟机:可以支持已经转换成的Java应用的运行。dex格式。那个。dex格式是专门为Dalvik设计的压缩格式,适用于内存和处理器速度有限的系统。
ART:安卓运行时是在安卓操作系统上运行的环境。ART在第一次安装时可以将应用程序的字节码转换成机器码。采用预编译技术。
差异:
在Dalvik环境下,每次程序运行时,都需要通过即时编译器将字节码转换为机器码,这会减缓应用程序的启动时间。
ART环境下:程序第一次安装时,字节码会被预编译成机器码。在这种情况下,虽然设备和应用程序的初始启动会变慢,但以后每次启动执行时都可以直接运行,运行效率会提高。
艺术的优点和缺点
优势
系统性能显著提高
应用程序启动更快,运行更快,体验更流畅,感觉反馈更及时
更长的电池寿命
支持较低的硬件
劣势
字节码变成机器码后,会占用更多的内存空
应用程序的安装时间变长了
-结束-