站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Dalvik
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
'''Dalvik'''是[[Google]]公司自己设计用于[[Android]]平台的[[Java]][[虚拟机]]。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java[[应用程序]]的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合[[内存]]和[[处理器]]速度有限的[[系统]]。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的[[Linux]] 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有[[程序]]都被关闭。 ==Dalvik架构== 名为dx工具是用来转换Java class成为DEX格式, 但不是全部。多个类别包含在一个dex文件之中。多个类别中重复的字串和其他常数包括会存放在DEX之中只有一次,以节省空间。Java字节码(betecode)转换成Dalvik虚拟机所使用的替代指令集。一个未压缩dex文件通常是稍稍小于一个已经压缩.Jar档。再次安装到行动设备之时,可能会被修改的Dalvik可执行档。为了获得进一步的最佳化,端序(byte order)可能会在一定的[[数据]]交换,简单的[[数据结构]]和函数库,可内联(linked inline),空的类别物件可能会短路。当Android启动时,Dalvik VM 监视所有的程序(APK),并且创建依存关系树,为每个程序优化[[代码]]并存储在Dalvik缓存中。Dalvik第一次加载后会生成Cache文件,以提供下次快速加载,所以第一次会变得很慢。Dalvik直译器采用预先算好的Goto位址,基于每个指令集OpCode,都固定以64bytes为Memory Alignment。这样可以节省一个指令集OpCode后,要进行查表的时间。为了强化功能, Dalvik还提供了Fast Interpreter。 ==Dalvik优势== *Dalvik主要是完成对象生命周期管理,[[堆栈]]管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。 *Dalvik负责[[进程]]隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。 *不同于[[Java]][[虚拟机]]运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex *dex文件格式可以减少整体文件尺寸,提高I/O操作的类查找速度。 *odex是为了在运行过程中进一步提高性能,对dex文件的进一步优化。 *所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖[[操作系统]]的线程调度和管理机制 *有一个特殊的虚拟机进程Zygote,他是虚拟机实例的孵化器。它在系统启动的时候就会产生,它会完成虚拟机的初始化,库的加载,预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的数据提供给系统。对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域。 ==Dalvik差异== *Dalvik虚拟机早期并没有使用JIT(Just-In-Time)技术. 从 Android 2.2 开始, Dalvik 虚拟机也支持 JIT. *Dalvik虚拟机有自己的bytecode, 并非使用 Java bytecode. *Dalvik 基于暂存器(register),而 JVM 基于堆栈(stack)。 *Dalvik VM 透过 Zygote 进行Class Preloading,Zygote会完成虚拟机的初始化,也是与 JVM 不同之处。 ==Dalvik影响== Dalvik的诞生也导致人们开始忧虑[[Java]]平台的第一次大规模的分道扬镳或许已经是进行时了——有人已经把Davlik和微软的JVM以及[[Sun]] 对[[微软]]的诉讼联系起来,看Google身上是否也会发生类似事情;另外一些人则指出,[[Google]]并没有宣称Dalvik是一个Java实现,而微软却是这样做的。Sun也对可能带来的阵营分裂表达了忧虑情绪,并提出和Google合作来保证Dalvik和JVM之间的兼容性——Google对此的解释是,Dalvik是对解决目前Java ME平台上分裂的一次尝试,也是为了提供一个拥有较少限制许可证的平台。甚至还有人怀疑这是否是Sun和Google两大阵营对Java之未来的一次大规模较量。 ==相关词条== *[[JAVA]] *[[Android]] *[[Google]] *[[虚拟机]] ==参考来源== *http://zh.wikipedia.org/wiki/Dalvik%E8%99%9A%E6%8B%9F%E6%9C%BA *http://baike.baidu.com/view/1551869.htm [[category:Google|D]] [[category:虚拟机|D]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)