JVM和Dalvik的区别

1.android应用程序运行在单独的一个Dalvik虚拟机内,Dalvik专门针对同时高效运行多个虚拟机进行了优化,

因此android系统可以方便地实现对应用程序进行隔离。

2.Dalvik并未遵守jvm规范,两者也不兼容,jvm运行的是java字节码(.class文件)

Dalvik运行的是其专有的dex(Dalvik Executeable)文件

DX工具将应用程序所有的.class文件编译成.dex文件,Dalvik运行.dex文件。

3.Dalvik虚拟机适应于移动终端上的特点:

1.专有的.dex文件吧所有的.class 文件整合到一个文件中,减少了.class文件中的冗余信息,提高

运行性能

2.基于寄存器实现,而jvm等pc上虚拟机大多是基于栈的。


总结:

   jvm虚拟机:

       1.java虚拟机基于栈,基于栈的机器必使用指令来载入和操作栈上的数据,
 
       2.java虚拟机运行的是字节码(.class)
 
       3.类会被编译成一个或多个字节码.class文件,打包到jar文件中,java虚拟机从相应的.class文件盒jar文件中获取相应的字节码

   Dalvik:

       1.dalvik虚拟机是基于寄存器的

       2.Dalvik运行的是自定义的.dex 字节码格式

       3.类编译成.class文件后,会通过一个dx工具将所有的.class文件转换成一个.dex文件,然后dalvik虚拟机会从其中读取指令和数据。

一个应用,一个虚拟机实例,一个进程(所有

android应用的线程都是对应一个linux线程,都运行在自己的沙盒中,不同的应用在不同的进程中运行。每个

android dalvik应用程序都被赋予了一个独立的linux PID(app_*))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值