您的位置:首页 > 移动开发 > Android开发

JVM和Dalvik的区别

2014-03-14 21:21 357 查看
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_*))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android应用 jvm dalvik