趣味分析JVM与DVM的差别

前序:

      要是没有发生这么一件事,也不会有DVM的。之前Google一直用的都是JVM,本来也没啥事情,可JVM是Sun公司开发的,你用别人的东西又不交银子不打招呼,也难怪人家不乐意,所以啊,这Sun公司呢 就一直跟Google官司不断,就告别人侵权,要求赔偿。赔偿就赔偿嘛,你别乱开价啊,虽然杂家有银子,但也得合理对不,三五八块的还是没问题的对嘛!你要求别人给你2000w美金还限制人家只能使用2年,关键你还要别人道歉,典型的抢钱又踩脸,Google又不是SB,要是实力悬殊就认了,但是杂家还是不怂的,肯定不愿意啊,所以两家就一直争争吵吵。

     但是Google心里郁闷啊,就下定决心对自己,说,好,你不让我用,我自己开发一个。所以DVM就产生了。但是凭空开发一个新玩意出来哪有这么简单,肯定要“借鉴”人家的嘛,很正常对不对!在国内这种“借鉴”多着去了,也都没啥事情,为毛你们就不能安安静静的搞点技术呢。

     这时候轮到Sun公司心里不痛快的,哪有这么便宜的事,还是要打官司。然后,Sun公司被Oracle公司收购,Java商标从此正式归Oracle所有。卧 槽,这Oracle也是叼的不行,居然拿之前的官司继续跟Google纠缠,所谓的理由是DVM里有9行代码抄袭,小歌都郁闷了,尼 玛,几百万行的代码,怎么发现的,没事干还是纯粹找茬,然后继续申诉。至于结果,好像是Google赢了。不扯了,进入正文。

正文:

JVM:(Java Virtual Machine)  Java虚拟机

DVM:(Dalvik Virtual Machine)  Dalvik虚拟机

JVM    .Java----->.class----->.jar

运行在内存的 栈(栈是内存当中特殊的数据结构)

DVM    .java----->.class------>.dex-----(加上其它资源文件)---->apk

运行在CPU的 寄存器

不废话,先看图===>>>


趣味分析JVM与DVM的差别_第1张图片

区别还是很明显的:

JVM编译后生成的是.class文件 最后.jar包

而DVM,多了一步.dex文件,最后打包apk。

所以JVM执行的是.class文件,而DVM执行的是.dex文件。

除此之外呢

JVM:里含有多个.class文件,每个.class文件都包含文件头,这样IO操作效率低。

但是DVM中,看不到.class文件了,一个都没看到,这是因为dex工具,去掉了app里所有.class文件的冗余信息,再整合到.dex文件中,减少了IO的操作,提高了查找速度。同时你会发现就一个.dex文件,是比较大的。

反馈:

更多请关注小歌,小歌保证每周一篇技术性文章,给枯燥之余来点芬芳。

CSDN:http://write.blog.csdn.net/postlist

github: https://github.com/ITtrap

QQ: 2632545852

Email: [email protected]

版权声明:本文为博主原创文章,如有雷同纯属巧合。转载请附上链接!3q!!!

你可能感兴趣的:(趣味分析JVM与DVM的差别)