趣味分析JVM与DVM的差别

作者: Trap_余生 | 来源:发表于2016-08-18 10:57 被阅读797次

    前序:

          要是没有发生这么一件事,也不会有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编译后生成的是.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: xuchen1009@gmail.com

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

    相关文章

      网友评论

      本文标题:趣味分析JVM与DVM的差别

      本文链接:https://www.haomeiwen.com/subject/uvdvsttx.html