dalvik虚拟机执行流程_逆向基础虚拟机

本文介绍了虚拟机概念,它是可执行特定文件的运行环境。阐述了Java虚拟机运行Java字节码,基于栈架构;Dalvik虚拟机运行Dalvik字节码,基于寄存器架构,适用于Android 5.0以下;ART虚拟机执行本地机器码,用于Android 5.0及以上。还提及两种编译模式及虚拟机间的替换和加载文件差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击蓝字默默关注

4.1  虚拟机的概念

首先给大家介绍一下什么是虚拟机,这里所讲的虚拟机,可能和大家接触过的有些区别,它是一个运行环境,可以在上面执行相应的文件,比如: class文件、odex文件、oat文件等。

4.2  介绍java虚拟机、dalvik虚拟机和art虚拟机1.java虚拟机:

java虚拟机运行的是java字节码,java程序经过编译,生成JAVA字节码保存在class文件中,java虚拟机通过解码class文件中内容来运行程序。

java虚拟机基于栈架构,虚拟机需要频繁的从栈上读取写入数据,这个过程需要更多的指令分派与内存访问次数,会耗费很多CPU的时间。

Java虚拟机执行流程图如下:

d24de607bec1ec08f341367355e8e8d1.png

2.dalvik虚拟机(jit机制):

(1)Android 5.0以下。

(2)dalvik虚拟机运行的是dalvik字节码,所有的dalvik字节码由    java字节码转换而来,并被打包到一个DEX可执行文件中,dalvik虚拟机通过解释DEX文件执行这些字节码。

(3)dalvik虚拟机基于寄存器架构,数据的访问通过寄存器间直接传 递,这样的访问方式比基于栈方式要快很多。

(4)dalvik可执行文件体积更小。

3.art虚拟机(aot机制):

(1)Android 5.0版本及以上。

(2)ART虚拟机执行的是本地机器码。

在前面两种虚拟机中我们接触到了两种编译模式:

JIT:Just In Time 即时编译技术,是dalvik虚拟机使用的模式。

AOT:Ahead Of Time,预编译技术,是art虚拟机使用的模式 。

4.dalvik虚拟机与art虚拟机是如何实现无缝替换的,如下图所示。

48909f2ab972159cd4c69e4c000b2ce3.png

注意

.dex =>dexopt=>.odex  dalvik加载执行的odex文件

.dex=>dex2oat=>.oat   art加载执行的是oat文件

小结

本节课主要学习了虚拟机的概念,Dalvik虚拟机和ART虚拟机的使用,同时也了解java虚拟机、dalvik虚拟机和art虚拟机之间的区别,如下表所示。

f1da5a3284cd7b8e0e2a69ef45ed1e1e.png

c6427699e8cf0730d4fffdc04cd360d2.gif因为你的分享、点赞、在看我足足的精气神儿!517da77dbd9498493a203190ee8af53b.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值