zoukankan      html  css  js  c++  java
  • Android DVM

    1.DVM(Dalvik Virtual Machine)概述
    • 是Google公司自己设计用于Android平台的Java虚拟机
    • 支持已经转化为.dex(及Dalvik Excutable)格式的Java应用程序的运行
      • .dex格式是专为Dalvik设计的一种压缩格式,可以减少整体文件尺寸(对比?),提高I/O操作的类查找速度,所以适合内存和处理器速度有限的系统
     
    2.DVM和标准的Java虚拟机(JVM)之间的区别
    • 数据结构不一致
      • DVM——基于寄存器
        • 基于寄存器的方式,对提前优化(ahead-of-time optimization)提供了很好的支持,移动设备属于受限环境,提前优化非常重要
        • 基于寄存器的虚拟器,对于更大的程序来说,他们编译花费的时间更短
      • JVM——基于栈
      • 思考——寄存器&栈之间的区别?
        • 寄存器——是中央处理器内的组成部分。是有限贮存容量的告诉存储部件,可以用于暂存指令、数据和地址。(更加底层)
        • 控制部件——IR(指令寄存器)&PC(程序计数器)
        • 算数及逻辑部件——ACC(累加器)
      • 栈——线程独有的,保存期运行状态和局部变量(多线程中局部变量是相互独立的,不同于类变量)
        • 栈在线程开始的时候初始化(Start方法)
        • 每个函数都有自己的栈,用于函数间的参数传递
        • 操作系统切换线程时候会自动切换栈,就是切换SS/ESP寄存器。
        • 栈空间不需要在高级语言显示分配和释放
    • 运行环境
      • Dalvik经过优化,运行在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。
        • 独立进程可以防止在虚拟机崩溃的时候所有程序都被关闭。(一个程序的闪退不影响另一个程序,沙箱原理?)
        • JVM是怎么样的?
    • 运行对象不同
      • DVM——Dalvik专用文件格式.dex
      • JVM——Java字节码
     
    3.DVM的设计规则
    (1)每个应用程序都运行在自己的Linux空间。在需要执行应用程序时Android将启动该进程,当不需要该应用程序且系统资源分配不够时,系统自动终止该进程。
    (2)每个应用程序都有自己的DVM,所以任一程序的代码与其他应用程序的代码都是互相隔离的。
    (3)默认情况下,每个应用程序都分配一个唯一的Linux用户ID(所以流量监测,根据用户ID获取每个app的上行、下行流量)。所以应用程序的文件只对对应程序可见。——安全性、独立性
     
     
    4.Android应用程序的编译
    • Android所有类都通过Java编译器编译,再通过AndroidSDK的“dex文件转换工具”转换为dex字节文件,再有DVM载入运行。
    5.DVM特征
    • 使用专有的.dex格式
      • java类文件在编译之后,会产生至少一个的.class文件,包含大量多余信息,dex文件格式会把所有的.class文件内容整合到一个.dex文件中,减少了文件的尺寸和IO操作,也提高了类的查找速度。
      • 增加了对新操作码的支持
      • 文件结果尽量简洁,使用等长的指令,提高解析速度
      • 尽量扩大只读结构的大小,提高跨进程的数据共享——?
    • dex的优化
      • 验证dex文件中的所有类
      • 对一些特定的类和方法里面的操作码进行优化
      • 调整所有的字节序和对齐结构中的每一个域
    • 基于寄存器,代码执行效率更好(相对基于栈)
    • 每一个Android应用都允许在自己的DVM实例中。每一个DVM实例都是一个独立的进程空间,所有Android的线程都对应Linux的线程,DVM可以更多地依赖操作系统的线程调度和管理机制(二者联系?)。
    • 不同应用都是用不同的Linux用户运行以最大程度保护用户应用程序的安全性和独立性
     
    参考:
    http://blog.csdn.net/jyfllzy/article/details/6119568
  • 相关阅读:
    Elementary Methods in Number Theory Exercise 1.3.13
    Elementary Methods in Number Theory Exercise 1.3.17, 1.3.18, 1.3.19, 1.3.20, 1.3.21
    数论概论(Joseph H.Silverman) 习题 5.3,Elementary methods in number theory exercise 1.3.23
    Elementary Methods in Number Theory Exercise 1.2.31
    数论概论(Joseph H.Silverman) 习题 5.3,Elementary methods in number theory exercise 1.3.23
    Elementary Methods in Number Theory Exercise 1.3.13
    Elementary Methods in Number Theory Exercise 1.3.17, 1.3.18, 1.3.19, 1.3.20, 1.3.21
    Elementary Methods in Number Theory Exercise 1.2.31
    Elementary Methods in Number Theory Exercise 1.2.26 The Heisenberg group
    4__面向对象的PHP之作用域
  • 原文地址:https://www.cnblogs.com/amyzhu/p/8060504.html
Copyright © 2011-2022 走看看