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

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

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.csdn.net/kent_todo/article/details/22331379

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值