【Android 】Dalvik虚拟机和JVM虚拟机的区别
2016-05-12 16:14
447 查看
一:功能架构上的区别?
注:首先要阐明Dalvik虚拟机与Java虚拟机是完全不同的虚拟机,
1. Dalvik虚拟机是完全为了Android量身定制的一款虚拟机,用于提高对于移动设备内存的高效实用,和在低速CPU上提高运行性能, 并且依赖于Linux底层POSIX兼容的操作系统,可以简单的完成进程隔离和线程管理;
2. JVM虚拟机是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬 件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成
在Java虚拟机上解释运行的目标代码(字节码.class文件),就可以在多种平台上不加修改地运行。
二:虚拟机运行文件的区别?
1.Dalvik虚拟机运行优化后的.DEX格式的文件
![](https://img-blog.csdn.net/20160512190247931?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注:为什么Dalvik 虚拟机选择弃用原有的.class字节码文件而使用.dex文件运行程序么?
①.一个Android应用中可能存在很多的类文件,编译后会产生很多的 .class 文件,并且.class文件间会有不少冗余的信息,而DEX文件会把所有的.class文件整合到一个文件中,这样除了减少了整体的文件大小,I/O操作,也提高了类的查找速度,原来每个类都会开一个常量池,现在.dex文件中使用唯一的常量池来管理。
②.dex进行了除上述优化之外还进行了如下的优化工作:调整所有字段的字节序个对齐结构中的每一个域;验证DEX文件中的所有类;对一些特定的类进行优化,对方法里面的操作码进行优化;
③.优化时机:其一在编译生成APK附加生成一个ODEX优化文件(APK 中不包含DEX文件);其二在APK首次安装的时候apk中存在的dex文件会在运行的时候被优化并保存在系统缓存中;
2.JVM虚拟机运行.class文件或者经过打包的.jar文件
![](https://img-blog.csdn.net/20160512190707173?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
三:Dalvik虚拟机在Android中地位:
1.Dalvik 虚拟机存在于Android系统架构中的Android RunTime层;
2.Dalvik 虚拟机主要完成对象生命周期管理,堆栈管理,线程管理,安全和异常的管理,垃圾回收;
3.每个Android应用都独立运行于一个Dalvik虚拟机实例里,而每一个Dalvik实例存在于一个独立的进程空间;所有Android应用的线程都对应一个Linux线程;
注:首先要阐明Dalvik虚拟机与Java虚拟机是完全不同的虚拟机,
1. Dalvik虚拟机是完全为了Android量身定制的一款虚拟机,用于提高对于移动设备内存的高效实用,和在低速CPU上提高运行性能, 并且依赖于Linux底层POSIX兼容的操作系统,可以简单的完成进程隔离和线程管理;
2. JVM虚拟机是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬 件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成
在Java虚拟机上解释运行的目标代码(字节码.class文件),就可以在多种平台上不加修改地运行。
二:虚拟机运行文件的区别?
1.Dalvik虚拟机运行优化后的.DEX格式的文件
注:为什么Dalvik 虚拟机选择弃用原有的.class字节码文件而使用.dex文件运行程序么?
①.一个Android应用中可能存在很多的类文件,编译后会产生很多的 .class 文件,并且.class文件间会有不少冗余的信息,而DEX文件会把所有的.class文件整合到一个文件中,这样除了减少了整体的文件大小,I/O操作,也提高了类的查找速度,原来每个类都会开一个常量池,现在.dex文件中使用唯一的常量池来管理。
②.dex进行了除上述优化之外还进行了如下的优化工作:调整所有字段的字节序个对齐结构中的每一个域;验证DEX文件中的所有类;对一些特定的类进行优化,对方法里面的操作码进行优化;
③.优化时机:其一在编译生成APK附加生成一个ODEX优化文件(APK 中不包含DEX文件);其二在APK首次安装的时候apk中存在的dex文件会在运行的时候被优化并保存在系统缓存中;
2.JVM虚拟机运行.class文件或者经过打包的.jar文件
三:Dalvik虚拟机在Android中地位:
1.Dalvik 虚拟机存在于Android系统架构中的Android RunTime层;
2.Dalvik 虚拟机主要完成对象生命周期管理,堆栈管理,线程管理,安全和异常的管理,垃圾回收;
3.每个Android应用都独立运行于一个Dalvik虚拟机实例里,而每一个Dalvik实例存在于一个独立的进程空间;所有Android应用的线程都对应一个Linux线程;
相关文章推荐
- Android读取系统mp3文件
- android波浪背景
- android binder机制
- 自定义AlertDialog
- android自定义控件的最大高度MaxHeightView
- Android:SQLite无法update/insert/delete数据(数据库被locked)
- Android Volley框架使用源码分享
- 为Android添加开机启动脚本
- Android仿斗鱼领取鱼丸文字验证(二)
- Android开发自定义控件实现一个球赛胜负数统计条
- 通过Glide回调获取Bitmap对象并转换成Base64
- 12. Android框架和工具之 StringUtils(字符串操作)
- 【Android】 Android之API类库整理
- 11. Android框架和工具之 Logger(调试代码)
- Android 开发中遇到的Error:Execution failed for task ': :dexDebug'. > com.android.ide.common.process.Proces
- android 获取手机包名显示
- Android4.4.2 滑动事件跟踪记录
- 13.View的事件分发机制——dispatchTouchEvent详解
- android string.xml 前后加空格
- Android自定义下载状态栏