1 Dalvik和Java虚拟机

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

猜你喜欢

转载自www.cnblogs.com/heixiang/p/10964090.html