问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

大厂Android开发高频面试问题:说说你对Zygote的理解

发布网友 发布时间:2022-10-18 18:35

我来回答

1个回答

热心网友 时间:2023-11-24 04:50

Zygote可以说是Android开发面试很高频的一道问题, 但总有小伙伴在回答这道问题总不能让面试满意, 在这你就要搞清楚面试问你对Zygote的理解时,他最想听到的和其实想问的应该是哪些? 下面我们通过以下几点来剖析这道问题!

Zygote的作用分为两点:

关于这个问题答出了这两点那就是OK了。可能大部分小伙伴可能能答出第二点,第一点就不是很清楚。SystemServer也是Zygote启动的,因为SystemServer需要用到Zygote准备好的系统资源包括:

直接从Zygote继承过来就不需要重新加载过来,那么对性能将会有很大的提升。

在说Zygote启动流程之前, 先明确一个概念:启动三段式, 这个可以理解为Android中进程启动的常用套路, 分为三步骤:

这里要了解LOOP循环是什么,其实LOOP作用是不停地 接受消息 , 处理消息 ,消息的来源可以是 Soket 、 MessageQueue 、 Binder 驱动发过来的消息,但无论消息从哪里来,它整个流程都是去接受消息,处理消息。这个启动三段式,它不光是Zygote进程是这样的,只要是有独立进程的,比如说系统服务进程,自己的应用进程都是如此。

Zygote进程的启动取决于init进程,init进程是它是linux启动之后用户空间的第一个进程,下面看一下 启动流程

3.启动配置文件中定义的系统服务,其中Zygote服务就是定义在配置中的

4.同时启动的服务除了Zygote之外还有一些别的系统服务也是会启动的,比如说ServiceManager进程,它是通过fork+execve系统调用启动的

在init.rc 文件中会import /init.${ro.zygote}.rc,init.zygoteXX,XX指的是32或者64,对我们没差我们直接看init.zygote32.rc即可。配置文件比较长,这里做了截取保留了Zygot相关的部分。

说完了启动配置呢,这里来聊一下启动进程, 启动进程有两种方式:

第一种:fork+handle

第二种:fork+execve

两者看起来差不多,首先首先都会调用fork函数创建子进程,这个函数比较奇特会返回两次,子进程返回一次,父进程返回一次。 区别在于:

主要分为两部分Native层处理和Java层处理,Zygote进程启动之后,它执行了execve系统调用,它执行的是用C++写的二进制的可执行程序里的main函数作为入口,然后在Java层运行!

先来看一下Native层的处理流程

在app_main.cpp文件,AndroidRuntime.cpp文件。我们可以找到几个主要函数名

根据上述代码,你会发现在我们的应用里直接就可以 JNI 调用了,并不需要创建虚拟机。因为应用进程是Zygote进程孵化出来的,继承了父进程的拥有虚拟机,只需要重置数据即可。

接着看一下Java层的处理,具体可参考ZygoteInit文件的main方法

1.预加载资源,比如常用类库、主题资源及一些共享库等

2.启动SystemServer进程

3.进入Socket 的Loop循环 会看到的ZygoteServer.runSelectLoop(…)调用

Zygote启动流程中需要主要以下2点问题

最后

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
M&G 晨光 48K线装本-适用对象 M&G 晨光 A5纸质笔记本棕色 - 购买最佳价格 欧伦A5线装本棕色-适用对象 得力FA530 A5/30张小学生作业本簿-性价比最高的纸质笔记本 kinbor DTB40103 线装本 灰色 单本-适合所有需要记录和管理的人群_百度... 得力颐和园系列皮面记事本,实用与收藏价值兼具 写尚A5线装本蜡感鹿头经典款黑色360页G15黑笔礼盒装-高端大气上档次 乔先生 康奈尔笔记本 曜石黑 A4方格版 纸质笔记本推荐 Amari阿玛瑞QS-008 2020年日程本-金华盛纸纸质笔记本推荐 CHOGORI笔记本-高品质A5纸质笔记本,236页米黄色道林纸,多色可选... 2021年免费师范生新宁一中有多少个? 新宁一中中考科目总分 玻璃体浑浊是否可以治愈?怎样可以得到缓解? 60多岁老人,先天性眼皮下下垂,据眼科医生检查, 新宁一中新校区投入使用时间 玻璃体浑浊,吃什么中药好?具体怎么治疗? 如何改善玻璃体浑浊的方法 玻璃体浑浊是病吗?造成玻璃体浑浊的原因是什么?玻璃体浑浊会影响身体吗? 新宁县初中升高中分数线 新宁县第八中学有高中吗 新宁一中2022录取分数线 2022年新宁一中录取分数线 微笑的座右铭 天时地利人和的译文 我的读书笔记—稻盛和夫的实学(一) 稻盛和夫 天时地利人和翻译 读稻盛和夫《斗魂》:大道至简,大音希声 稻盛和夫:只要做到这2点,你会越来越优秀(推荐) 朋友快乐相聚的感言 百闻社张文澜简介- 问一问 经幡是什么意思? 什么是理想电压源?理想电流源? 它们具备什么性质? 什么是经幡呢,它有什么象征呢? 十字架的寓意是什么? 读《你当像鸟飞往你的山》 书文摘录|《你当像鸟飞往你的山》|《我们的低语,我们的尖叫》 人体的极限力量理论上是多少? 人体力量的极限? 人的爆发力极限有多大 成年人力量的极限是多少牛顿 力量有极限吗 浅析如何建设节约型税务机关 白带异常,豆腐渣样,外阴瘙痒灼热,该吃什么药 初中化学真金不怕火炼是什么意思 真金不怕火炼是是什么意思 抗战大剧《滹沱儿女》即将上线,实力派云集,能否成为新的王炸? 谁有奥特曼格斗进化3的全人物+全s+全任务完成完美存档的百度网盘 义乌属于哪个市(浙江金华义乌市第一大镇) 数之最优化中的licq什么意思 为什么 带刀架的水槽 不能做台下盆