Android虚拟机

Android应用运行在Dalvik/ART虚拟机,每个应用程序就是一个进程。每个进程都对应一个单独的Dalvik虚拟机实例。Dalvik虚拟机执行的是dex文件。

基于栈的虚拟机

基于栈的虚拟机,每一个运行时的线程都有一个独立的栈。栈中记录了方法调用的历史,每有一次方法调用,栈中便会多一个栈帧。最顶部的栈帧称作当前栈帧。其代表着当前执行的方法。基于栈的虚拟机通过操作数栈进行所有操作。

基于寄存器的虚拟机
寄存器

​ 寄存器时CPU的组成部分。寄存器是有限存储容量的高速存储部件,它们可以用来暂存指令、数据和位址。

基于寄存器的虚拟机中没有操作数栈,但是有很多虚拟寄存器。其实和操作数栈相同,这些寄存器也存放在运行时栈中,本质上就是一个数组。与JVM相似,在Dalvik VM中每个线程都有自己的PC和调用栈,方法调用的活动记录以帧为单位保存在调用栈上。与JVM相比,可以发现Dalvik版程序的指令数明显减少了,数据移动次数也明显减少了。

ART与Dalvik

Dalvik虚拟机执行的是dex字节码,解释执行。从Android2.2版本开始,支持JIT即使编译(Just In Time)在程序运行的过程中进行选择热点代码(经常执行的代码)进行编译或者优化

而ART(Android Runtime)是在Android4.4中引入的一个开发者选项,也是Android5.0及更高版本的默认Android运行时。ART虚拟机执行的是本地机器码。Android的运行时从Dalvik虚拟机替换成ART虚拟机,并不要求开发者

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值