Android Dalvik虚拟机

本文详细介绍了Android Dalvik虚拟机的特点,包括其体积小、DEX格式的高效性和寄存器架构。对比了Dalvik与Java虚拟机的区别,并解析了Dalvik如何执行程序,特别是JIT即时编译在提升性能上的作用。通过Zygote进程的创建和类的装载过程,阐述了Android应用的运行机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dalvik虚拟机的特点–掌握Android 程序的运行原理

Dalvik 虚拟机概述

Dalvik 虚拟机作为Android 平台的核心组件, 拥有如下儿个特点:
• 体积小, 占用内存空间小:
• 专有的DEX可执行文件格式, 体积更小, 执行速度更快;
• 常侄池采用32 位索引值, 寻址类方法名、字段名、常呈更快;
• 基千寄存器架构, 并拥有一套完整的指令系统;
• 提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能;
• 所有的Android 程序都运行在Android 系统进程里, 每个进程对应着一个Dalvik 虚拟机实例。

Dalvik 虚拟机与Java 虚拟机的区别

Java 虚拟机运行的是Java 字节码, Dalvik 虚拟机运行的是Dalvik 字节码。

传统的Java 程序经过编译, 生成Java 字节码保存在class 文件中, Java 虚拟机通过解码class 文件中的内容来运行程序。而Dalvik 虚拟机运行的是Dalvik 字节码, 所有的Dalvik 字节码由Java字节码转换而来,并被打包到一个DEX (Dalvik Executable)可执行文件中。Dalvik虚拟机通过解释DEX文件来执行这些字节码。

Dalvik可执行文件体积更小。

AndroidSDK中有一个叫dx的工具负责将Java字节码转换为Dalvik字节码。dx工具对Java类文件重新排列,消除在类文件中出现的所有冗余信息,避免虚拟机在初始化时出现反复的文件加载与解析过程。一一般情况下,Java类文件中包含多个不同的方法签名,如果其他的类文件引用该类文件中的方法, 方法签名也会被复制到其类文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值