Android DVM

  1. Android运行环境主要指的虚拟机技术—Dalvik.
  2. Android中的所有Java才程序都是运行在Dalvik vm上的,Android上的每个程序都有自己的线程,DVM执行的是.dex的Dalvik excutable文件,每个Android应用有一个独立的DVM实例并在其解释下执行。每一个应用程序既是一个进程(Linux的一个process)。Android中Java程序通过编译后,还需要通过SDK中的dex工具转化为.dex格式。DVM再从中读取指令和数据。
  3. Jvm和DVM的区别:
  • DVM虽然也是用Java编程语言,Dalvik虚拟机和一般Java虚拟机并不兼容。
  • Jvm执行.class字节码文件,而DVM执行其专有的.dex文件。
  • Jvm是基于栈(Stack-based)的虚拟机,DVM是基于寄存器的虚拟机(Register-based),后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点,虽然通用性差了点外,但是代码的执行效率高。
  • 总之,DVM非常适合用于移动终端上,与pc相比,它不需要很快的CPU与大量的内存空间。
  • 将class文件转换成dex文件的原因,class文件中包含大量的陈余信息,dex文件格式会把所有的class文件内容整合到一个dex文件中减少整个文件尺寸和IO操作,也提高查找速度。文件结构简单,使用等长指令,借以提高解析速度,支持新的操作码。
时间: 2024-12-20 03:20:46

Android DVM的相关文章

class 文件与dex文件区别 (dvm与jvm区别)及Android DVM介绍

区别一:dvm执行的是.dex格式文件  jvm执行的是.class文件   android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成.apk文件.apk就是android package的意思. jvm执行的是.class文件. 区别二:dvm是基于寄存器的虚拟机  而jvm执行是基于虚拟栈的虚拟机.寄存器存取速度比栈快的多,dvm可以根据硬件实现最大的优化,比较适合移动设备. 区别三:.class文件存在很

android 面试

2. 横竖屏切换时候 activity 的生命周期1. 不设置 Activity 的 android:configChanges 时 , 切屏会重新调用各个生命周期 , 切横屏时会执行一次 , 切竖屏时会执行两次 . 2. 设置 Activity 的 android:configChanges=”orientation” 时 , 切屏还是会重新调用各个生命周期 , 切横.竖屏时只会执行一次 . 3. 设置 Activity 的 android:configChanges=”orientation

第一次面试赤子城Android开发实习生

关于面试的表现和感想 1.没有准备充分就去面试(这是大忌,也就直接决定了结果) 我去面试Android,但是却不知道很多关于Android的基础知识,就是明明没有学习多少Android的东西,还没有看什么书就去面试,别人肯定不会要 2.笔试答的非常不好 笔试内容大致是:a.你对static的理解:b.你对Java内存回收GC的理解:c.activity的生命周期:d.view的处理流程:e.事件的分发:f.Java进程的消息传递方式:g.Android DVM的进程和Java的进程和Linux的

Android面试常规问答

  1. Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Con

android笔试题一

1.Android DVM(Dalvik VM)的进程和Linux的进程, 应用程序的进程是同一个概念吗? DVM(Dalvik VM)指dalvik的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.运行在自己的DVM进程之中,不同的app不会相互干扰,且不会因为一个DVM的崩溃导致所有的app进程都崩溃. Android 运行环境主要指的虚拟机技术--Dalvik.An

Android 面试题(转)

转自:http://www.jobui.com/mianshiti/it/android/2682/ 1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.2.sim卡的EF 文件有何作用sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己的操作系统

Android中的进程

每个Android程序默认情况下只有一个进程,这个进程是在自己独立的空间中运行,默认拥有独立的Dalvik虚拟机实例.每一个DVM都是Linux中的一个进程,所以可以认为Android dvm的进程和Linux的进程, 应用程序的进程是同一概念. 但是也可以指定Activity或者Service在Remote 进程中执行.多数情况下,只有在用户认为应用退出后还需要继续后台长期运行的应用,才需要这样做.此时,该应用有两个进程. 如何退出进程 1.System.exit(0)  这个方法是用来结束当

(转)Android面试题

1.  下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存  C.内存回收程序允许程序员直接释放内存  D.内存回收程序可以在指定的时间释放内存对象  2.  下面异常是属于Runtime Exception 的是(abcd)(多选) A.ArithmeticException B.IllegalArgumentException C.NullPointerException D.BufferUnderflowExcept

Android面试题基础(转)

71道经典Android面试题和答案 1.下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 D.内存回收程序可以在指定的时间释放内存对象 2.下面异常是属于Runtime Exception 的是(abcd)(多选) A.ArithmeticException B.IllegalArgumentException C.NullPointerException D.BufferUnd