IT袋

当前位置:主页 > 经验教程 > 系统教程 >

手机版安卓虚拟机哪个最好用

手机版安卓虚拟机哪个最好用 手机虚拟机型app推荐(3)

时间:2023-10-29 10:28:32 来源:IT袋 作者:苏晓敏
导读:手机版安卓虚拟机哪个最好用,由于ART的出现,使Dalvik在安卓系统应用方面注定成为历史。 架构 不同于其他堆栈结构的Java虚拟机,dalvik采用的是基于寄存器的架构。 dx工具将部分(但不

手机版安卓虚拟机哪个最好用

由于ART的出现,使Dalvik在安卓系统应用方面注定成为历史。

架构

不同于其他堆栈结构的Java虚拟机,dalvik采用的是基于寄存器的架构。

dx工具将部分(但不是全部)Java的.class文件转换成.dex格式。多个类被包含在一个.dex文件中。为了节省空间,各个类文件中重复的字符串和其他常数只在.dex输出中存放一次。Java字节码被转换成Dalvik虚拟机所使用的替代指令集。一个未压缩的.dex文件通常比来自相同.class文件的已压缩.jar文档小。

当被安装到移动设备时,Dalvik可执行文件可能会被修改。为了进一步优化,虚拟机可能会调整文件内部分数据的端序、内联一些函数和简单的结构体、并短路掉一些不必要的操作等。

自Android 2.2开始,Dalvik支持JIT(just-in-time,即时编译技术)。

优化后的Dalvik较其他标准虚拟机存在一些不同特性

·占用更少空间

·为简化翻译,常量池只使用32位索引

·标准Java字节码实行8位堆栈指令。Dalvik使用16位指令集直接作用于局部变量。局部变量通常来自4位的“虚拟寄存器”区。这样减少了Dalvik的指令计数,提高了翻译速度。

当Android启动时,Dalvik VM 监视所有的程序(APK),并且创建依存关系树,为每个程序优化代码并存储在Dalvik缓存中。Dalvik第一次加载后会生成Cache文件,以提供下次快速加载,所以第一次会很慢。

Dalvik解释器采用预先算好的Goto地址,每个指令对内存的访问都在64字节边界上对齐。这样可以节省一个指令后进行查表的时间。为了强化功能, Dalvik还提供了快速翻译器(Fast Interpreter)。

性能

基于堆栈的机器与基于寄存器的机器谁更有优势一直是个争论不休的话题。

一般来说,基于堆栈的机器必须使用指令才能从堆栈上的加载和操作数据,因此,相对基于寄存器的机器,它们需要更多的指令才能实现相同的性能。但是基于寄存器机器上的指令必须经过编码,因此,它们的指令往往更大。这种差异主要是VM机对的操作码调度造成的,它们往往比其他的因素昂贵,比如说及时汇编。

然而,2010年,在Oracle公司(Java技术的拥有者)嵌入式设备上的标准非图形化性能测试表明,Android 2.2(最初的版本包括一个即时编译器)比Java SE嵌入式设备(两者都基于 Java SE 6)慢2-3倍。

类库

Dalvik虚拟机既不支持Java SE 也不支持Java ME类库(如:Java类,AWT和Swing都不支持)。相反,它使用自己建立的类库(Apache Harmony Java的一个子集)。

其他

许可与专利

Dalvik是基于Apache License 2.0发布的。Google说Dalvik是一个清洁室(clean room)的实现,而不是一个在标准Java运行环境的改进,这意味着它不继承标准版本的或开源的Java运行环境的版权许可限制。关于这一点,Oracle和一些专家还在讨论中。

相关阅读