返回
顶部

修改密码

趣味分析JVM与DVM的差别

+1

-1

收藏

+1

-1

点赞0

评论0

前序: ? ? ? 要是没有发生这么一件事,也不会有DVM的。之前Google一直用的都是JVM,本来也没啥事情,可JVM是Sun公司开发的,你用别人的东西又不交银子不打招呼,也难怪人家不乐意,所以啊,这Sun公司呢 就一直跟Google官司不断,就告别人侵权,要求赔偿。赔偿就赔偿嘛,你…

前序:

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

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

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

正文:

JVM:(Dalvik Virtual Machine)? Java虚拟机

DVM:(Dalvik Virtual Machine)? Dalvik虚拟机

JVM? ? .Java—–>.class—–>.jar

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

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

运行在CPU的 寄存器

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

2306667-06b5496246547437

区别还是很明显的:

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

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

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

除此之外呢

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

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

文/ITtrap(简书作者)
原文链接:http://www.jianshu.com/p/6a58f4472066
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

转载请注明:Android开发中文站 » 趣味分析JVM与DVM的差别

扫一扫在手机打开

评论
已有0条评论
0/150
提交
热门评论
相关推荐
没有IDE,该如何创建Android项目并运行
  • 开发实例
  • 2022-05-20 18:28
  • 0 0 0
+1
Android 3分钟带你入门开发测试
  • 开发实例
  • 2022-05-20 18:28
  • 0 0 0
+1
一个 Android MVVM 组件化架构框架
  • 开发实例
  • 2022-05-20 18:28
  • 0 0 0
+1
Android9.0针对Toast的特殊处理
  • 开发实例
  • 2022-05-20 18:28
  • 0 0 0
+1
今日要闻
换一批
热点排行