您的位置:华清远见教育科技集团 >> Android资料 >> Android Dalvik虚拟机的优化  
 
Android Dalvik虚拟机的优化
分享到:

虚拟机中指令的解释时间主要分为3个方面:分发指令、访问运算数、执行运算。其中"分发指令"这个环节对性能的影响大,为了加快运行速度,必须提高分发指令的速度,在Android中对Dalvik虚拟机进行了许多优化!

与传统的Java虚拟机基于栈不同,Dalvik是基于寄存器的。基于寄存器的虚拟机实现,虽然在硬件通用性上稍逊一筹,但是数据处理速度却有明显的改善,可以更为有效地减小冗余指令的分发和减小内存的读写访问。

Dalvik虚拟机针对移动终端所做的优化,使得其不需要很快的CPU速度和大量的内存空间。根据Google的测算,Android的早期版本只需要64MB的RAM即可使系统正常运转,其中24MB被用于底层系统的初始化和启动,另外20MB被用于高层启动、高层服务。当然,随着Android版本的不断升级和应用功能的扩展,Android对内存的消耗也在逐渐增加。

另外需要注意的是,Dalvik并不是按照Java虚拟机的规范来实现的,两者并不兼容。

Java虚拟机运行的是Java字节码,而Dalik虚拟机运行的则是其专有的DEX(Dalvik Executable)字节码。

在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class),然后打包成JAR文件。在执行期间,Java虚拟机会从JAR文件抽取相应的CLASS文件并从中读取指令和数据。而Android虽然也是基于Java语言进行编程的,但是在编译成CLASS文件后,Android会通过"dx"工具将应用所有的CLASS文件转换一个DEX文件,接着将DEX和应用的其他如资源文件等一起打包构成APK文件,而后Dalvik虚拟机会从其中读取指令和数据。图1-1显示了Android的编译过程。


图1-1 Android的编译过程

Dalvik虚拟机的主要特征包括:专有的DEX字节码、支持新的操作码、文件结构非常简洁、使用等长的指令、借以提升解析速度、尽量扩大只读结构的大小、借以提高跨进程的数据共享比例。

 更多相关文章

·Dalvik虚拟机原生方法的注册