Dalvik虚拟机简要介绍
2019-06-17 本文已影响0人
曾经灬
一、与java虚拟机的不同
Dalvik虚拟机使用的指令是基于寄存器的,而Java虚拟机使用的指令集是基于堆栈的。
一般而言,执行同样的功能,java需要更多的指令(主要是load和store指令),dalvik需要更多的指令空间。需要更多指令意味着要多占用CPU时间,而需要更多指令空间意味着数据缓冲(d-cache)更易失效。
基于堆栈更利于移植,因为它不对目标机器的寄存器进行任何假设。
二、内存管理
Dalvik虚拟机的内存大体上可以分为Java Object Heap、Bitmap Memory和Native Heap三种。
Java Object Heap是用来分配Java对象的
Native Heap就是在Native Code中使用malloc等分配出来的内存,这部分内存是不受Java Object Heap的大小限制的,也就是它可以自由使用,当然它是会受到系统的限制。
Bitmap Memory也称为External Memory,它是用来处理图像的。
三、即时编译
Dalvik选择JIT即时编译,JIT只会选择那些热点代码进行编译或者优化。根据2-8原则,一个程序80%的时间可能都是在重复执行20%的代码。因此,JIT就可以选择这20%经常执行的代码来进行编译和优化。