我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Android】Android虚拟机

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Android】Android虚拟机

虚拟机

Android的虚拟机主要有两种:Dalvik 虚拟机 ART(Android Runtime)虚拟机

Dalvik 虚拟机
Dalvik 虚拟机是 Android 早期使用的虚拟机,它基于寄存器架构。从Android 2.2版本开始,支持JIT即时编译(Just In Time)在程序运行的过程中进行选择热点代码(经常执行的代码)进行编译或者优化。Dalvik 执行的是经过转换优化后的 dex(Dalvik Executable)字节码文件,而不是传统的 Java 字节码。Dalvik 虚拟机针对移动设备的特点进行了优化,具有较小的内存占用和较高的执行效率。每个应用程序都在独立的 Dalvik 虚拟机实例中运行,实现了应用程序之间的隔离。

ART 虚拟机
自 Android 5.0(Lollipop)起,Android 引入了 ART 虚拟机作为默认的运行环境。ART 使用 Ahead-Of-Time(AOT)编译技术,将 dex 字节码在应用安装时预先编译成本地机器码,这样在运行时就无需再进行实时的字节码转换,提高了应用程序的启动速度和执行效率。与 Dalvik 不同,ART 的执行方式更接近于传统的 Java 虚拟机,采用基于堆栈的指令集

区别

基于寄存器的虚拟机

在基于寄存器的虚拟机中,将数据保存在寄存器中。虚拟寄存器可以看作是一个数组,用于存储局部变量、参数和临时变量等运行时数据。每个虚拟寄存器都有自己的编号,可以通过编号来访问和操作寄存器中的值。

在 Dalvik VM 中,每个线程都有自己的程序计数器(Program Counter,PC)和调用栈。程序计数器用于记录当前线程执行到的指令位置,而调用栈则用于保存方法调用的活动记录,每个活动记录称为一个帧(frame)。每个帧包含了方法的局部变量表和操作数寄存器等信息。

因此,对于基于寄存器的虚拟机来说,数据存放在寄存器中,虚拟寄存器是一个数组,保存在运行时栈中。每个线程都有自己的程序计数器和调用栈,方法调用的活动记录以帧为单位保存在调用栈上。

基于栈的虚拟机

每个虚拟机运行时线程都有自己独立的栈。栈用来记录方法调用的历史,每当一个方法被调用时,就会在栈中创建一个新的栈帧(stack frame)。栈帧包含了方法的局部变量表、操作数栈以及一些额外的信息。

栈的顶部栈帧被称为当前栈帧,代表当前正在执行的方法。栈帧中的局部变量表用于存储方法中定义的局部变量和参数,而操作数栈用于执行方法中的操作。

基于栈的虚拟机通过操作数栈进行所有的指令操作。指令可以从操作数栈中取出操作数,执行相应的操作,然后将结果再次压入操作数栈中。这种基于栈的指令集设计简洁紧凑,并且不依赖于具体的硬件架构,因此能够实现较好的跨平台性。

方法执行完成或者遇到方法调用时,当前栈帧会被弹出,并且恢复到上一个栈帧,继续执行上一个方法。这样,通过不断创建和销毁栈帧,基于栈的虚拟机能够实现方法之间的无缝切换和控制流的管理。

总结起来,基于栈的虚拟机使用独立的栈来记录方法调用历史,每个栈帧代表一个方法的执行上下文,包含局部变量表和操作数栈。通过操作数栈进行指令操作,实现方法间的切换和控制流管理。这种设计具有简洁、紧凑和跨平台等特点。

Android程序安装优化

当一个应用在 Android 系统上被安装时,会根据所使用的运行时环境(Dalvik 或 ART)执行不同的优化过程。

Dalvik 虚拟机中,应用在安装过程中会进行一次优化,将应用的 dex 字节码转换为优化的可执行文件 odex(Optimized DEX)文件。这个优化过程由 dexopt 工具完成。dexopt 根据设备配置和系统策略,对 dex 文件进行字节码优化、预解析和预验证等操作,并生成 odex 文件。odex 文件包含了已经优化过的字节码以及相关的元数据信息,加速了应用运行时的加载和执行速度。

而在 ART(Android Runtime)中,引入了预先编译机制(Ahead Of Time Compilation)。在应用安装时,ART 使用设备自带的dex2oat工具将应用的 dex 字节码直接编译成本地机器码,也就是将应用的 dex 文件转换为 ELF(Executable and Linkable Format)可执行文件。这个编译过程可以发生在应用安装期间,也可以在应用首次运行时发生,具体取决于设备和系统策略。

通过将 dex 字节码编译为本地机器码,ART 提供了更高的应用执行性能和更低的内存占用。与 Dalvik 不同,ART 在应用运行时无需进行即时编译(Just-In-Time Compilation),而是直接执行本地机器码,提高了应用的响应速度和效率。

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_43358469/article/details/131479841

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Android】Android虚拟机

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

VMware安装Android x86_64 9.0虚拟机

Vmware 安装 Android 虚拟机 Vmware 安装 Android 虚拟机1.[获取镜像-天翼云盘](https://cloud.189.cn/t/2mEzIreEnU3m)2.安装·VMware3.创建虚拟机安装And
2023-08-17

Android虚拟机Dalvik和ART科普

这篇文章主要为大家介绍了Android虚拟机Dalvik和ART科普详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-18

Android虚拟机Dalvik和ART详解

Dalvik和ART都是Android虚拟机的一种实现方式,它们的主要区别在于执行字节码的方式不同。1. Dalvik虚拟机:Dalvik虚拟机是Android 4.4及之前版本中默认的虚拟机。它使用的是即时编译(Just-In-Time
2023-09-22

VMware虚拟机Ubuntu1804编译Android 10.0

系统 windows系统下VMware Workstation 15 Pro虚拟机装的Ubuntu1804  64位Android版本 Android-10.0.0_r26代码下载 参考android网站 https://source.an
2022-06-06

android虚拟机原理是什么

Android虚拟机的原理是将Android操作系统安装在主机操作系统上,通过虚拟化技术实现在主机上运行Android应用程序。具体来说,Android虚拟机的实现可以分为两个层次:硬件层次和软件层次。在硬件层次上,Android虚拟机利用
2023-10-12

android虚拟机的特点有哪些

Android虚拟机是一种运行在计算机上的模拟Android操作系统的软件。它的特点包括:跨平台兼容性:Android虚拟机可以在不同的操作系统上运行,如Windows、Mac和Linux等。虚拟化技术:Android虚拟机使用虚拟化技术
android虚拟机的特点有哪些
2024-04-09

adb查看android虚拟机的数据库

adb是Android SDK中自带的一个调试工具,使用这个工具可以直接对连接在电脑上的手机或者模拟器进行调试操作。它存放在sdk里的platform-tools目录下,如果想在命令行中使用这个工具,需要先把它的路径配置到环境中。首先我么先
2022-06-06

android虚拟机不能运行如何解决

如果Android虚拟机无法运行,可能有以下几种解决方法:1. 检查计算机硬件和软件要求:确保计算机满足Android虚拟机的最低要求。例如,要求具有支持虚拟化技术的处理器,以及足够的内存和硬盘空间。2. 检查虚拟化技术支持:打开计算机的B
2023-09-14

Android虚拟机安装的步骤是什么

安装Android虚拟机的步骤如下:选择合适的Android虚拟机软件,常用的有Android Studio自带的Android Virtual Device(AVD)和Genymotion等。下载并安装选定的Android虚拟机软件。
Android虚拟机安装的步骤是什么
2024-04-09

Android虚拟机黑屏的原因有哪些

Android虚拟机黑屏的原因可能有以下几种:虚拟机配置不足:如果虚拟机的内存或处理器配置不足,可能会导致虚拟机运行缓慢或黑屏。虚拟机崩溃或错误:如果虚拟机出现崩溃或错误,可能会导致虚拟机黑屏。软件冲突:某些软件可能与虚拟机发生冲突,导致虚
Android虚拟机黑屏的原因有哪些
2024-04-09

android 使用虚拟机安装apk(图文教程)

1、启动虚拟机 2、我的android sdk在“E:\android\android开发环境\android SDK\platform-tools”把要安装的apk复制到这个根目录(和adb.exe同文件夹)。 2、点击电脑左下角的“开始
2022-06-06

如何在VMware上安装一个Android虚拟机

当一些app需要安卓系统进行测试时,而恰好手上只有苹果的时候,往往需要安装一个Android虚拟机 安装虚拟机 常见的虚拟机有VirtualBox、VMware、Mircrosoft Virtual PC等,下面以VMware为例。在VMw
2023-08-16

解决Hyper-v与VM虚拟机不兼容的方法(Android Studio使用Genymotion虚拟机)

先贴链接 Genymotion下载链接:http://www.genymotion.net/ VirtualBox下载链接:https://www.virtualbox.org/wiki/Downloads (以上是官网下载渠道,考虑到下载
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录