admin管理员组文章数量:1567000
JVM
JVM(java virture machine)java虚拟机简称。JVM是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。java语言的跨平台就是通过jvm实现的。
Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,下皆以windows平台为例,linux下和solaris下其实类似,为:libjvm.so),这个动态连接库才是java虚拟机的实际操作处理所在。
DVM
Android系统是以Linux系统为底层构建的,开源的Android系统需要配置到不同硬件配置的设备上,为了降低应用的开发难度,在Linux底层之上构筑了一个名为"Dalvik"的虚拟机。名为虚拟机,实际是一种应用编译模式,Android4.4开始引入的ART模式是一种全新的应用编译模式,Android5.0彻底从Dalvik转换到ART。
Dalvik模式:
Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一,它可以支持已转换为.dex格式的java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。每一个Dalvik应用作为一个独立的Linux进程执行,在有限的内存中允许同时运行多个虚拟机的实例。独立的进程可以防止在虚拟机崩溃时所有程序都被关闭。
因为Dalvik虚拟机,Android开发者只需按照谷歌提供的SDK即可轻松创建APP,不需要顾忌硬件、底层驱动等问题,在每次执行应用时,Dalvik虚拟机都会将程序的语言由高级语言编译为机器语言,Dalvik依靠一个Just-In-Time(JIT)编译器去解释字节码,每次运行程序都需要做上述操作,将字节码编译为机器语言;所以很长时间以来,Dalvik虚拟机一直被用户指责为拖慢安卓系统运行速度不如IOS的根源。
ART
ART模式:
ART(Android Runtime)。启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样运行程序时就不会每次都进行一次编译了,将提高执行效率。
DVM与JVM区别
- JVM是Oracle公司开发的。Dalvik虚拟机是Google等公司开发的。
- Dalvik基于cpu寄存器保存数据,而JVM基于栈。在性能方面,完成同样的事情,基于栈的JVM需要更多的指令,意味着更多的指令分派和内存访问次数。基于寄存器的虚拟机编译的时间更短。Dalvik编译时,局部变量被赋给任意一个可用的寄存器,然后Dalvik直接操作这些寄存器而不是访问元素。JVM在编译时,变量会被放入到变量表中,继而被压入栈。Dalvik最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。
- JVM支持的字节码由.class文件组成。在程序编译时,Java把类编译成一个或多个.class文件,然后打包到jar包中,JVM从jar中获取.class文件和JRE字节码。Dalvik虽然也是用java语言编程,但是在程序通过编译后,还需要通过SDK中的dex工具将.class转换为一个.dex格式,Dalvik再从其中读取指令和数据。
- 运行环境和SDK都不同。JVM只能运行一个实例,也就是所有应用都运行在同一个虚拟机中。而Dalvik,每一个实例作为一个独立的进程执行,运行在一个独立的虚拟机中,可以防止一个程序的崩溃导致所有程序都崩溃。
- Dalvik有预加载机制,运行时共享相同的类,大大减少了消耗,而JVM在打包后类都是单独加载运行。在安卓5.0之后,增加了ART模式,系统会在程序安装后进行一次预编译,将代码转为机器语言存在本地,这样在每次运行时不用再进行编译,大大提高效
DVM与ART区别
- ART与Dalvik最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。
- ART占用空间比Dalvik大(字节码变为机器码之后,可能会增加10%-20%),这就是“时间换空间大法”。
- 预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗。
编译模式 | RAM内存 | ROM内存 | 流畅度 | 省电 | 兼容性 | 加载速度 |
Dalvik | 大 | 小 | 普通 | 普通 | 好 | 慢 |
ART | 小 | 大 | 好 | 好 | 有待优化 | 快 |
版权声明:本文标题:安卓内存优化——安卓虚拟机运行模式 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1725919460a1049021.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论