当前位置: 首页 > 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.cnnetsun.cn/news/104774.html

相关文章:

  • Cirq代码补全进阶指南(函数提示使用全解析)
  • STM32 USB摄像头连接技术深度解析
  • 从开发到上线:多模态Agent Docker存储配置全流程(附最佳实践模板)
  • 【AI工程化落地必看】:多模态Agent Docker测试用例设计的8项军规
  • 第十九篇:多租户架构:数据隔离与资源配额
  • VLN-CE视觉语言导航实战:从零开始构建智能导航系统
  • 中国电力招标网:开启能源行业高质量发展的“金钥匙”
  • 京东外卖全国上线“自提”功能:线上点单,到店即走更省时
  • ITSS在中小企业中的应用策略:从轻量化落地到能力成长
  • 35岁不是程序员的终点,而是新起点:大龄程序员如何再次进入大厂?
  • BiliPlus进阶指南:解锁B站深度体验的全新方式
  • 37、Linux 网络服务管理全解析
  • 非晶磁芯:国产化“市占率”突围战背后的中国力量|深圳金鑫磁材
  • 荒原之梦考研数学:考研报名人数连续两年下降,还要考研吗?
  • 32、深入了解 Linux 系统安全防护
  • 3分钟学会李跳跳自定义规则:彻底告别手机弹窗的终极指南
  • 免费API合集:为您的项目打开无限可能
  • Vercel AI SDK与Docker集成避坑指南:那些官方文档不会告诉你的秘密
  • 为什么现在应届大学生都热衷从事IT互联网行业?
  • Vue + Element UI :从零开发号码标记查询系统
  • Minecraft Bedrock启动器终极配置指南:从新手到高手的完整解决方案
  • 前端数据安全保护方案:从水印技术到全方位防护体系
  • Docker MCP 网关插件开发指南(90%开发者忽略的核心原理)
  • FastReport开源版:快速构建.NET报表系统的完整指南
  • HeidiSQL数据库管理工具:从零开始的完整安装与使用指南
  • MATLAB与XFoil翼型分析:终极集成指南
  • EmotiVoice语音合成在新闻播报自动化中的效率提升
  • 浏览器原生Python编程革命:JupyterLite深度解析与应用指南
  • Vue Query Builder 终极指南:快速构建可视化查询界面
  • 从零构建高可用Agent服务:Docker备份恢复的7步黄金流程