• 【转】Android中Dalvik(DVM)的详解


    本文转自 http://www.zuiniuwang.com/?p=163

    Dalvik概述

    Dalvik是Google公司自己设计用于Android平台的Java虚拟机。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,可以减少整体文件尺寸,提高I/o操作的类查找速度所以适合内存和处理器速度有限的系统。

    Dalvik虚拟机(DVM) 和Java 虚拟机(JVM)首要差别

    Dalvik 基于寄存器,而JVM 基于栈。性能有很大的提升。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。

    寄存器的概念

    寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC),在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

    栈的概念

    栈是线程独有的,保存其运行状态和局部自动变量的(所以多线程中局部变量都是相互独立的,不同于类变量)。栈在线程开始的时候初始化(线程的Start方法,初始化分配栈),每个线程的栈互相独立。每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动的切换栈,就是切换SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放。

    DVM进程的设计规则   

    1)每个应用程序都运行在它自己的Linux空间。在需要执行该应用程序时Android将启动该进程,当不再需要该应用程序,并且系统资源分配不够时,则系统终止该进程。

    2)每个应用程序都有自己的(DVM),所以任一应用程序的代码与其他应用程序的代码是相互隔离的。

    3)默认情况下,每个应用程序都给分配一个唯一的Linux用户ID。所以应用程序的文件只能对该应哟程序可见。

    所以说么个应用程序都拥有一个独立的DVM,而每个DVM在Linux中又是一个进程,所以说DVM进程和Linux进程可以说是一个概念。

    Android 应用程序的编译

    Android所有类都通过JAVA编译器编译,然后通过Android SDK的“dex文件转换工具”转换为“dex”的字节文件,再由DVM载入执行。

  • 相关阅读:
    @黎耀天 , 你的 论文 里 是不是 说 电场 磁场 对 光 有 作用 ?
    《如何彻底搞懂狭义相对论里的“光速不变”?》 回复
    宇宙际理论该如何理解?
    无工质 飞行装置
    《李秉泉的心里话》 回复
    《与K歌之王的交流》 回复
    我对 李炳铁 和 李秉泉 两位老师 的 学术成果 的 评价
    知乎 : 为什么美国中小学生学的数学比我们简单,美国人却还能做出超级牛的东西?
    @bnllm 快把 0, 1, 1, 无穷, 无穷, 阶乘, 指数 玩坏了
    让 我们 来 测量 普朗克常数 和 万有引力常数
  • 原文地址:https://www.cnblogs.com/xiaoQLu/p/2953468.html
Copyright © 2020-2023  润新知