1、Dalvik虚拟机架构和Java虚拟机的架构不同
1、Java虚拟机基于栈结构,需要频繁从栈读取或写入数据,这个过程需要更多的指令与内存访问次数,会消耗cpu时间
 2、Dalvik虚拟机基于寄存器,数据访问通过寄存器直接传递,比栈方式快。
     public class Hello {
          public int foo(int a, int b) {
          return (a + b) * (a - b);
      }
    public static void main(String[] args) {
       Hello hello = new Hello();
       System.out.println(hello.foo(5, 3));
      }
     }
 保存为Hello.java文件,打开终端执行
 javac Hello.java 编译生存Hello.class文件
 然后再执行 dx --dex --output=Hello.dex Hello.class 生存dex文件
 javap -c -classpath .Hello 命令执行后得到下面代码:
public int foo(int, int);
 Code:
  0: iload_1
  1: iload_2;
    2: iadd
    3: iload_1
    4: iload_2
    5: isub
    6: imul
    7: ireturn
 使用dexdump.exe查看foo()函数的Dalvik字节码,执行下面命令
 dexdump.exe -d Hello.dex
 得到如下代码
    0000:add-int v0, v3, v4
    0002:sub-int v1, v3, v4
    0004:mul-int/2addr v0, v1
    0005:return v0
  
Java字节码分析:8个命令 8个字节,至于怎么压栈进栈就不详细讲了
 Dalvik字节码分析:4条命令完成操作
 代码指令减少,速度更快。
 2、Dalvik虚拟机如何执行程序的
 Android系统有Linux内核、函数库、Android运行时、应用程序框架和应用层组成。Dalvik虚拟机属于Android运行时环境
更多请见:http://www.mark-to-win.com/tutorial/52021.html









