1 Dalvik和Java虚拟机

本文详细对比了Dalvik虚拟机与Java虚拟机的特点与区别,包括它们的执行文件格式、常量池管理、内存模型及运行机制,强调了Dalvik虚拟机在Android系统中的角色及其对应用性能的影响。

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

Dalvik虚拟机特点:

1.  体积小

2.  DEX格式可执行文件,相比java运行速度快

3.  常量池采用32位索引值

4.  提供对象生命周期,堆栈,线程,权限,异常等管理

5.  Android系统里每个进程对应一个Dalvik虚拟机

 

Dalvik虚拟机和Java虚拟机区别:

1.  Java虚拟机:java字节码保存在class文件中,通过解析class文件运行

Dalvik虚拟机:Dalvik字节码由java字节码转换,打包到一个dex文件中,解析dex文件运行

2.  Dex文件将class文件解析,去掉冗杂的信息,所有类共享一个常量池达到压缩体积提高文件解析效率的目的

3.  Java虚拟机基于栈结构,Dalvik虚拟机基于寄存器结构

 

通过解析简单的java文件比较Java和Dalvik虚拟机的区别

1.  编写简单的java文件

 

2.  执行javac 生成 .class文件

 

3.  Javap 反编译生成的 .class文件

 

4.  将编出的Hello.class文件转换成 .dex文件

到      \sdk\build-tools\android-4.2.2 目录下执行

 

使用dexdump.exe查看 .dex文件

 

 

 

Java程序,每个线程都有一个PC计数器和一个Java栈。Java虚拟机最多只支持0xff条指令

PC计数器,记录当前位置距离方法开头的偏移量,

Java栈,以帧为单位(frame)保存线程的运行状态,调用方法在栈上压入新栈帧,方法返回则弹出栈帧

Dalvik虚拟机:每个线程维护一个PC计数器和调用栈

         调用栈,维护的是寄存器列表。寄存器数量在方法结构体的registers字段中

 

转载于:https://www.cnblogs.com/heixiang/p/10964090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值