学习之旅——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如果直接从寄存器上读取数据的话就会快很多

学习之旅——Android两种虚拟机_第1张图片

参考文档https://blog.csdn.net/kent_todo/article/details/22331379

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

你可能感兴趣的:(学习之旅——Android两种虚拟机)