在android中的每一个app应用都是运行在一个单独的进程中,而这个机制就是应用了dalvik的虚拟机制,该机制是一种类似于java虚拟机制的但其实两种并不一样的。首先,dalvik是运行.dex文件的,其.dex文件是通过java编译成为.class文件然后通过sdk中的dx工具转换成.dex格式的文件在运行的,然后通过读取指令和数据来运行;而java的虚拟机制是运行的字节码,其是通过java的.class字节码文件在压缩成jar文件,然后jse通过取得.class和jar的字节码来运行。两者不兼容。
dalvik有以下特点:
1>专有的.dex 文件格式;为什么不用java虚拟机制?原因有以下几点:
1》每一个应用包含很多的class文件,其中会有很多的冗余,而通过.dex文件可以将他们融合,这样可以减少了文件整体的I/O操作,同时也提高了查找速度。
2》增加了对新操作码的支持。
3》使用等长的指令,借以提高解析速度。
4》尽量扩大只结构的大小,借以提高跨进程的数据共享。
2>dex的优化
3>基于寄存器的,这样在硬件和通用性上要差一些,但是它在执行效率中更快一些。
4>一个应用,一个虚拟机制, 一个进程,这样可以利用linux的线程调度和管理机制提高了应用的安全和独立运行。