虚拟机

36 篇文章 0 订阅

Java

JVM

Android

概览

Dalvik

Google自己设计用于Android平台虚拟机,可运行已转.dex格式Java应用程序。.dex格式专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限系统。Dalvik经优化允有限内存同运多虚拟机实例且每一Dalvik应用作一独立Linux进程执行避虚拟机崩溃关所有程序。长时间以来,Dalvik虚拟机一直被用户诟病为拖慢安卓系统运行速度根源。2014年6月25日,Android L正式亮相谷歌I/O大会,改幅较大,删Dalvik用ART代替。

ART

Android Runtime。与Dalvik不同,Dalvik环境应用每运行时字节码都需通即时编译器(JIT,just in time)转机器码,拖慢应用运行效率。ART环境应用头次装时字节码预先通预编译(AOT,Ahead-Of-Time)编译成机器码,成为真正本地应用。

  • 优点
    • 显提系统性能
    • 应用启动更快、运行更快、体验更流畅、触感反馈更及时
    • 提电池续航能力
    • 支持更低硬件
  • 缺点
    • 机器码占存储空间更大。字节码变机器码后或增10%-20%
    • 应用装时变长

区别

  • Dalvik基于寄存器,JVM基于栈
  • Dalvik运行dex文件,JVM运行Java字节码

Android 2.2始Dalvik支持JIT(JIT,just in time 即时编译)。优化后Dalvik较其它标准虚拟机一些不同特性:

  • 占更少空间
  • 简化翻译。常量池仅用32位索引
  • 标准Java字节码实行8位堆栈指令,Dalvik用16位指令集直作用于局部变量。局部变量通来自4位虚拟寄存器区,减少Dalvik指令计数,提翻译速度。

Android启时Dalvik VM监视所有程序且创依存关系树,为每程序优化代码并存Dalvik缓存。Dalvik头次加载(很慢)生Cache文件以便下次快速加载。Dalvik解释器用预先算好Goto地址,每指令对内存访都于64字节边界上对齐。这样可节省一指令后查表的时间。Dalvik还提快速翻译器(Fast Interpreter)以强化功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snpmyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值