1.JVM
以 .java
为后缀的文件,最终会被编译成.class
字节码,运行在 jvm 上;JVM 的作用是将平台无关的 .class
字节码翻译成平台无关的机器码;
2.Dalvik
Dalvik 是Google设计的用于 Android 平台的 虚拟机;支持.dex
格式的 java应用程序的运行; .dex 格式是专为 Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统;
2014年6月25日,Android L 系统中直接删除 Dalvik ,用 ART 代替;
Dalvik 与JVM 的区别:
1.Dalvik 是基于寄存器,Jvm是基于栈的;
2.Dalvik 运行 dex 文件,Jvm 运行 java 代码;
3.Dalvik 支持 JIT (just-in-time 即时编译技术),优化后的 Dalvik 允许在有限的内存中同时运行多个虚拟机实例,并且每一个 Dalvik 应用作为一个独立的 Linux 进程执行;
3.ART
Android Runtime(ART) 是一种在 Android 操作系统上的运行环境;能够将字节码直接转化成机器码;
ART 与 Dalvik 的区别:
1.编译器
Dalvik 是基于即时编译器(JIT)将字节码转化成机器码,应用每次运行都会执行这个过程,会拖慢应用的运行效率;
ART 是基于预编译(AOT Ahead-Of-Time)将字节码转化成机器码,只有在首次安装的时候会执行上述过程,这样会导致首次安装变慢,但以后每次启动执行的时候,都会直接运行,提高运行效率;
2.占用空间
ART 占用空间比Dalvik大,字节码转化成机器码之后,存储空间会增大10%~20%,这就是注著名的 " 空间换时间";
3.性能
ART 明显改善了电池续航,在垃圾回收上也有了较大的提升;
网友评论