《Android虚拟机》----虚拟机概述
No1:
虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离的环境中的完整计算机系统。
No2:
Java虚拟机由如下五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆、一个方法区域。
No3:
Java虚拟机中有4种寄存器:
1)pc:Java程序计数器
2)optop:指向操作数栈顶端的指针
3)frame:指向当前执行方法的执行环境的指针
4)vars:指向当前执行方法的局部变量区第一个变量的指针
No4:
Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区
No5:
.dex文件格式会把所有的.class文件内容整合到一个文件中。这样,除了减少整体的文件尺寸,I/O操作,也提高了类的查找速度。原来每个类文件中的常量池,在.dex文件中由一个常量池来管理。
No6:
Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个Android应用程序,Zygote就会孵化出一个子进程来执行该应用程序。这样做的好处显而易见:Zygote进程是在系统启动时产生的,它会完成虚拟机的初始化,库的加载,预置类库的加载和初始化等操作,而在系统需要一个新的虚拟机实例时,Zygote通过复制自身,最快速地提供一个系统。另外,对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块共享区域,这样可以大大节省内存开销。
No7:
系统尝试预校验.dex文件中的所有类,从而降低class的负担,从而可以使用一系列的优化来提升运行性能。这些都是通过dexopt命令来实现的。
No8:
Dalvik VM的实现包括三个独立的解释内核:快速、可移植、调试。
快速解释器是为当前平台优化的,可能包括手动优化的汇编文件;相对的,可移植解释器是用C语言写的,可在广泛的平台上使用;调试解释器是可移植解释器的变种,包括了支持程序分析和单步。
No9:
No10:
No11:
Dalvik进程管理是依赖于Linux的进程体系结构的,如要为应用程序创建一个进程,它会使用Linux的fork机制来复制一个进程(复制进程往往比创建进程效率更高)。
Zygote是一个虚拟机进程,同事也是一个虚拟机实例的孵化器,通过init进程启动。首先会孵化出System_Server(Android绝大多系统服务的守护进程,它会监听socket等待请求命令,当有一个应用程序启动时,就会向它发出请求,Zygote就会孵化出一个新的应用程序进程)。每当系统要求执行一个Android应用程序时,Zygote就会运用Linux的fork机制产生一个子进程来执行该应用程序。
No12:
Android的初始化流程
No13:
Android中进程总结:
1)系统启动时init进程会创建Zygote进程,Zygote进程负责后续Android应用程序框架层的其他进程的创建和启动工作
2)Zygote进程会首先创建一个SystemServer进程,SystemServer进程负责启动系统的关键服务,如包管理服务PackageManagerService和应用程序组件管理服务ActivityManagerService
3)当我们需要启动一个Android应用程序时,ActivityManagerService会通过Socket进程间通信机制,通知Zygote进程为这个应用程序创建一个新的进程
No14:
Zygote进程是在系统启动时产生的,它会完成虚拟机的初始化、库的加载、预置类库的加载和初始化等操作,而在系统需要一个新的虚拟机实例时。Zygote通过复制自身,最快速的提供个系统。另外,对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域,大大节省了内存开销。
当Zygote进程在使用Linux的fork机制时有如下三种不同方式:
1)fork():孕育一个普通的进程,该进程属于Zygote进程
2)forkAndSpcecialize():孕育一个特殊的进程,该进程不再是Zygote进程
3)forkSystemServer():孕育一个系统服务进程
转载于:https://www.cnblogs.com/anni-qianqian/p/7661894.html
《Android虚拟机》----虚拟机概述相关推荐
- Android逆向基础----Android Dalvik虚拟机
Android Dalvik虚拟机的特点: l 体积小,占用内存空间小. l 专有DEX可执行文件. l 常量池采用32位索引值,寻址类方法名,字段名,常量更快. l 基于寄存器架构,并拥有一 ...
- android -------- java虚拟机和Dalvik虚拟机
2019独角兽企业重金招聘Python工程师标准>>> java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体 ...
- virtualbox android分辨率,VirtualBox 修改Android x86虚拟机的分辨率
VirtualBox 修改Android x86虚拟机的分辨率 首先说明一下,本人使用的是Windows下的VirtualBox,android x86使用的是9.0-r2版本一.查看virtualb ...
- Android在虚拟机和安卓机上运行不了
这个Android是虚拟机运行后总是显示:Unfortunately XXX has stopped和Android在安卓机上总会闪退应该怎么解决.今天跟着小编来解决吧!让你学习不在烦恼 下面这个是在 ...
- Android Studio虚拟机卸载步骤(特殊)
Android Studio虚拟机卸载步骤 在网上查了许多卸载多余虚拟机的博客,通常按照上述步骤即可卸载虚拟机,但有时只删除了配置文件,真正的数据并未清除,故而出此文章. 首先打开Android St ...
- 深入理解Android Java虚拟机ART相关及勘误
公众号: 神农和朋友们的杂文集 目录 本书的简单介绍 本书各章的难度评估 深入学习有什么好处? 本书勘误表 P14 P21 本书的简单介绍 <深入理解Android Java虚拟机ART> ...
- android dalvik虚拟机的作用,IT之家学院:认识Android中的Dalvik与ART虚拟机
又是一年高考时啊,在文章开始之前,IT之家先祝各位高考考生金榜题名~ 每到这个时候,小编就会想起自己的高三时光和高考经历,那段时光真是让人难忘.提起高三生活,可能很多同学都会想到桌子上堆得厚厚的书,黑 ...
- Android安卓虚拟机安装部署及测试举例
Android安卓虚拟机安装部署及测试举例 一. 简介 二. 安装准备 2.1 JDK下载 2.2 工具包下载 三.安装部署 3.1 JDK安装与部署 3.2 Android部署 四. 测试举例 一. ...
- 安卓系统怎么安装软件_VMware安装Android x86虚拟机,实现在PC电脑上运行安卓系统...
在日常的使用中,有时需要在PC机上模拟安装运行安卓系统,如果你的电脑中安装有vmware或者VirtualBox虚拟机.安装Android x86虚拟机是一个不错的选择.可以在PC电脑中模拟出一个安卓 ...
- 【SA8295P 源码分析】13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置
[SA8295P 源码分析]13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置 一.QUP v3 介绍 二.QUP v3 UART 功能配置 2. ...
最新文章
- 首个最全的MongoDB 3.6 全览
- 2008年5月网络管理员考试上午试卷参考答案
- 报名本科学习了,又报考了研究生考试了!!
- 3D数学基础:图形与游戏开发---随笔一
- 中学校园网建设实践与思考
- 分贝(BD)的含义以及关系(有助于深刻理解)
- iphone手机备忘录迁移_如何在iPhone和iPad上使用语音备忘录
- Opencv和C++实现canny边缘检测
- 常用排序算法(八)桶排序
- 修改Sql Server 2000数据库名称
- git不能上传空目录和设备文件
- spring-aop源码分析
- linux系统之上搭建maven 之nexus服务篇
- 短视频 SDK 架构设计实践
- python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...
- ARM Cortex-M3 学习笔记(3)
- 项目经理人才培养专题︱优秀项目经理能力建设(一)
- cpar文件的导入导出及注意事项
- Greedy is Good
- TI 评级报告 | RAI Finance:B,展望正面
热门文章
- mysql delimiter 作用
- 矩阵乘法和快速幂的一些优化和剪枝
- Go 从入门到精通(三)字符串,时间,流程控制,函数
- Android短信发送流程之多收件人发送(原)
- CMU 11642 Search Engines - 大纲梳理
- BlockChain- 以太坊架构
- JZOJ 4910. 【NOIP2017模拟12.3】子串
- 试用去水印_教你一键视频去水印,支持抖音、快手、小红书、哔哩哔哩等几十个平台...
- NOIP信息奥赛--1995“同创杯”初中复赛题题解(三)
- vb6 打印选项对话框_办公必备技能,Word打印问题及解决方案全在这,轻松解决打印难题...