首页 > 编程语言 > 详细

1 Dalvik和Java虚拟机

时间:2019-06-02 21:09:25      阅读:90      评论:0      收藏:0      [点我收藏+]

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字段中

 

1 Dalvik和Java虚拟机

原文:https://www.cnblogs.com/heixiang/p/10964090.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!