当前位置: 首页 > news >正文

Android 进程简析

进程管理

  • Out of Memory Killer:每一个进程的oom_adj初始值都等于其父进程的oom_adj值。oom_adj值越小,越不容易被杀死。内存紧张时,OOM Killer综合进程的内存消耗量、CPU时间、存活时间和oom_adj值来决定是否要杀死一个进程来回收内存
  • Low Memory Killer:进程的oom_adj值由ActivityManagerService根据运行在进程里面的组件的状态来计算。内存紧张时, LMK基于oom_adj值来决定是否要回收一个进程
    • Empty Process 空进程
    • Hidden Process
    • Perceptible Process
    • Visible Process 可见进程
    • Foreground Process 前台进程
  • 组件管理服务ActivityManagerService和窗口管理服务WindowManagerService也会在适当的时候主动进行进程回收。WindowManagerService在处理窗口的过程中发生Out Of Memroy时,也会通知ActivityManagerService杀掉那些包含有窗口的应用程序进程

重要进程

  • APP进程
    • 通过Process.start启动App进程, ActivityThread.main是入口
  • Launcher进程
  • System Server进程
    • 系统各大服务的载体。负责启动和管理整个Java framework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服务。
    • 是由Zygote进程fork而来,System Server是Zygote孵化的第一个进程
    • 1350号线程是其主线程。
    • PackageManager线程(1454)是system_server进程里的一个子线程。
  • Zygote进程
    • 是Android系统的第一个Java进程(即虚拟机进程),Zygote是所有Java进程的父进程
    • Zygote进程本身是由init进程孵化而来的。
    • 有64位和32位两种。zygote64的主线程是451号线程。
  • servicemanager
    • binder服务管家
    • 守护进程循环运行在binder_loop
  • init进程(pid=1)
    • 用户空间的第一个进程,也是所有用户态进程的父进程
    • 负责创建和管理各个native进程。
  • kthreadd进程(pid=2)
    • 是Linux系统的内核进程,会创建内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护线程。
    • kthreadd进程是所有内核线程的父进程。
  • swapper进程(pid=0)
    • 该进程又称为idle进程, 系统初始化过程Kernel由无到有开创的第一个进程
    • 用于初始化内核进程管理、内存管理,加载Display,Camera Driver,Binder Driver等相关工作
    • 创建init进程和ktheadd进程,最后进入idle循环,负责idle的管理和cpu热插拔之类的事务。
http://www.zskr.cn/news/115962.html

相关文章:

  • 如何用5步完成dupeGuru无障碍测试:NVDA屏幕阅读器兼容性终极指南
  • 终极指南:5分钟快速掌握PCB设计文件可视化利器
  • FastF1: 轻松获取和分析F1数据的Python包
  • 42、Linux编程:软件开发工具探索
  • 软件测试专栏——黑盒测试
  • 灰狼算法实现部分遮阴的MPPT跟踪,包括光照突变情况,包括灰狼算法程序和matlab/simu...
  • 2025年评价高的造纸烘干网带/粮食烘干网最新TOP品牌厂家排行 - 品牌宣传支持者
  • Skyvern终极指南:从零开始掌握智能自动化神器
  • 为什么你的Agent服务扛不住高负载?:基于Docker的真实压测数据告诉你真相
  • 2025年天津3d视频制作公司权威推荐榜单:天津三维动画制作/天津制作3d动画/天津动漫制作公司精选 - 品牌推荐官
  • Jmeter录制手机app脚本
  • SeedVR2-7B视频超分辨率实战:从环境搭建到4K修复全流程
  • 智行未来,科技驱动:AUTO TECH China 2026广州展将于11月27日举办!
  • 在Linux系统上轻松使用Google Gemini AI:小白级教程
  • go语言定时任务工具类
  • 【普中DSP28335开发攻略】-- 第 22 章 I2C-EEPROM 实验
  • FanControl步进速率智能散热配置指南:实战静音调校技巧
  • Elsevier 期刊 LaTeX 使用教程
  • 量子计算开发者的秘密武器:实现Q#与Python变量实时同步的3种方法
  • GP2040-CE完全指南:打造专业级游戏控制器的终极教程
  • 终极键盘可视化指南:让每个操作都清晰可见
  • Qt界面美化终极指南:10款免费QSS模板快速提升程序颜值
  • 5分钟搞定Lottie动画:从零到一构建专业级Web动效
  • VLN-CE视觉语言导航终极指南:如何让智能机器人听懂你的指令
  • awd赛题的flag是什么意思_【CTF攻略】CTF线下赛AWD模式下的生存技巧
  • 基于门控可微分图像处理的YOLOv12自适应增强实战指南**
  • 巴南区这家专业家电门店,藏着你不可错过的5大选购秘诀!
  • 【量子计算镜像文档生成全攻略】:掌握高效自动化文档核心技术
  • VMD-Python终极指南:如何在Python中实现分子可视化
  • 日志分析不再难,手把手教你用Azure CLI提取量子作业关键执行数据