android-浅谈DVM与JVM的区别

DVM:Dalvik virtual machine
JVM:Java virtual machine

区别:
1.DVM 基于寄存器,JVM基于栈,基于寄存器的编译花费的时间更短;
Dalvik字节码中,变量会被复制给65536个可用寄存器中的任何一个,直接访问这些寄存器,而不是方位堆栈中的元素;
JVM字节码中,变量会被压入堆栈中进行运算;
简单来说,基于寄存器的方式在编译的时候花费的时间更短;

2.Dalvik程序只包含一个.dex,JVM则为多个.class;

3.Dalvik允许多个实例,每一个实例作为一个独立的linux进程执行,可以防止一个程序的崩溃导致所有程序都崩溃;

4.性能:完成同样的事情,基于栈的虚拟机需要更多的指令,意味着更多的指令分派和 内存访问次数,这是 JVM 的执行性能不如 Dalvik VM 的原因之一。

5.DVM预加载-共享机制,运行时,共享相同的类,这样系统消耗会小很多,JVM机制中,打包后,他们都是完全独立的程序,类都是单独加载,单独运行;

另:ART模式 Android runtime (4.4可选,5.0默认开启)
DVM模式,鉴于兼容性,每次运行应用都需要一次编译,执行的效率大大降低;
ART模式,系统会在程序安装后进行一次预编译,将代码转为机器语言存在本地,这样在每次运行时不用再进行编译,大大提高效率;

缺点:
占用存储空间,安装程序变慢;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值