**Android Dalvik虚拟机讲义** Android Dalvik虚拟机是Android操作系统的核心组成部分,它是Google为移动设备特别设计的一种高效、轻量级的虚拟机。在Android系统中,应用程序以Dalvik可执行文件(.dex)的形式运行,这些文件是经过优化的Java字节码,专为节省内存和提高性能而设计。 1. **Dalvik架构** - **类加载器**: Dalvik虚拟机采用按需加载的方式,只有当类被引用时才会加载到内存中。 - **.dex文件格式**: Dalvik执行的代码是以Dalvik Executable (DEX) 文件格式存储的,它将多个Java类合并为一个单一的文件,减少了内存占用。 - **垃圾回收**: Dalvik虚拟机使用了自己的垃圾回收机制,有效地管理内存,防止内存泄漏。 2. **Dalvik Just-In-Time (JIT) 编译** - 在早期版本的Android中,Dalvik采用解释执行方式,后来引入了JIT编译技术,将频繁执行的代码片段预先编译成机器码,提升执行效率。 - Android 4.0 (Ice Cream Sandwich) 开始,Dalvik正式引入了JIT,进一步提升了性能。 3. **ART与Dalvik的对比** - **ART (Android RunTime)**: 从Android 5.0 (Lollipop) 开始,Dalvik被ART取代。ART采用了预编译(AOT, Ahead-Of-Time)方式,应用程序安装时就完成了全部代码的编译,运行时无需再进行JIT编译,提高了启动速度和运行效率。 4. **Dalvik优化** - **Dalvik字节码优化**: Dalvik虚拟机可以优化字节码,例如,通过常量池合并、冗余指令删除等手段减少代码体积。 - **Dalvik调试工具**: 如DDMS (Dalvik Debug Monitor Service),提供内存分析、线程监控、性能剖析等功能,帮助开发者调试应用。 5. **安全机制** - **Dalvik权限系统**: Android的安全模型基于Linux,Dalvik虚拟机在此基础上实现了细粒度的权限控制,限制了应用程序对系统资源的访问。 - **Dalvik汇编语言**: 为应对安全漏洞,Dalvik虚拟机还提供了汇编语言接口,允许开发者编写更底层的代码来增强安全性和性能。 6. **Dalvik虚拟机与硬件交互** - Dalvik虚拟机通过Android运行时库(如libdvm.so)与硬件平台进行交互,实现系统调用和服务。 - 针对不同硬件,Dalvik虚拟机可以进行一定程度的定制,以优化性能和兼容性。 7. **Android应用的生命周期** - 应用程序在Dalvik虚拟机中的生命周期是由系统管理和控制的,包括创建、启动、暂停、恢复、停止和销毁等状态。 - 开发者需要理解这些状态并适当地处理,以确保应用的正确运行和资源管理。 8. **内存管理** - Dalvik虚拟机的内存管理策略对开发者透明,但开发者仍需关注内存使用,避免过度分配导致的性能问题。 - 通过合理的对象复用、及时释放不再使用的资源等方法,可以有效降低内存压力。 9. **多线程** - Dalvik虚拟机支持多线程,每个应用程序都可以创建多个线程执行任务,需要注意线程同步和通信以防止数据竞争。 10. **Dalvik虚拟机的未来** - 虽然Dalvik已被ART取代,但其设计理念和技术仍对现代Android运行时有深远影响。Android持续演进,新的优化技术不断涌现,比如 ART的ART Native Profile Guided Optimization (PGO) 和ART的图形堆栈改进。 Android Dalvik虚拟机是Android应用运行的基础,它在性能、内存管理和安全性等方面的设计对整个Android生态系统的稳定和高效运行起到了关键作用。通过深入理解和掌握Dalvik虚拟机的工作原理,开发者能够更好地优化自己的应用,提供更流畅的用户体验。
- 1
- zhengg212011-09-11好的虚拟机资料真少,比如这个
- sunzeduo_19822012-02-15建议下载了android的dalvik源码的同志们就别再下载这个文档,里面没有任何个人的见解和分析,只有 源码 froyo\dalvik\docs 这个目录下的几个html,比较搞笑的是上传者还将里面同样内容的html 修改成 pdf的格式... 我不知道 zhengg21 上面的评论是讽刺还是什么其他的意思....
- sunboyljp2016-11-07有些深奥,表示看不懂!
- Liangbooo2013-07-21还真不错 有值得借鉴的地方
- goldfighter2013-09-22前面朋友说的对,其实就是源码里docs里面的其中几个文件,纯属骗积分
- 粉丝: 0
- 资源: 35
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip