JVM Dalvik Art

  • JVM Java虚拟机
    JVM并是不专为Java所实现运行的,只要其他编程语言的编译器能生成Java字节码,那这个语言也能实现在JVM上运行。eg:
  • Dalvik 虚拟机
    基于apache的java虚拟机,并被改进以适应低内存,低处理器速度的移动设备环境。Dalvik虚拟机依赖于Linux内核,实现进程隔离与线程调试管理,安全和异常管理,垃圾回收等重要功能。

JVM Dalvik 工作流程:
JVM Dalvik Art

Java虚拟机 Dalvik虚拟机
基于栈,基于栈的机器必须使用指令来载入和操作栈上数据 Dalvik虚拟机基于寄存器
java虚拟机运行的是java字节码。 Dalvik运行的是自己专属的.dex字节码格式。 (.class文件后,会通过一个dx工具将所有的.class文件转换成一个.dex文件)
一个应用对应一个Diavik虚拟机实例,独立运行
JVM在运行的时候为每一个类装载字节码 Dalvik程序只包含一个.dex文件,这个文件包含了程序中所有的类
  • Art虚拟机
    即Android Runtime,Android 4.4发布了一个ART运行时,准备用来替换掉之前一直使用的Dalvik虚拟机。
    ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。
    空间换时间,只会首次编译。cpu 使用频率少、电池续航改善、体验更流畅。。。