学习之旅——Android两种虚拟机

本文对比了Java虚拟机(JVM)与安卓虚拟机(DVM)的区别,包括它们的运行字节码类型、文件体积大小及执行效率上的差异。通过这些对比帮助读者理解为何安卓应用选择DVM作为其运行环境。

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

每次都看见有虚拟机的相关知识,看了一些大神的博客,决定整理一个自己看的懂得笔记,真的大篇大篇的文字我在电脑上看着眼睛累

JVM:JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序

          jvm是吧.java文本编译成.class字节码文件,在执行java程序的时候,类加载器把需要的类全部加载到内存当中去

DVM:而DVM就是Dalvik Virtual Machine,是安卓中使用的虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例

        .dex文件就是把多个class文件中的常量、方法等放到一起

以下图片可以看出两者不同

①JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码

②Dalvik可执行文件体积更小(原因:为了减小执行文件的体积,安卓使用Dalvik虚拟机,SDK中有个dx工具负责将JAVA字节码转换为Dalvik字节码,dx工具对JAVA类文件重新排列,将所有JAVA类文件中的常量池分解,消除其中的冗余信息,重新组合形成一个常量池,所有的类文件共享同一个常量池,使得相同的字符串、常量在DEX文件中只出现一次,从而减小了文件的体积

③JVM基于栈(所以每次访问数据cpu都要到内存中取到数据),DVM基于寄存器(寄存器是在cpu上的一块存储空间,cpu如果直接从寄存器上读取数据的话就会快很多

参考文档https://blog.youkuaiyun.com/kent_todo/article/details/22331379

https://www.jianshu.com/p/8edac8e09b3e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值