安卓内存优化——安卓虚拟机运行模式

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

有待优化

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值