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

Android AMS——进程优先级更新(十八)

        AMS 中的 updateOomAdjLocked 方法实现了进程优先级的动态更新。

获取 oom_adj:

adb shell ps|grep com.xiaoxu.mytest
adb shell cat /proc/21375/oom_adj   

        每个等级的进程又有对应的优先级,使用oom_adj值来表示,进程回收机制就是根据这个adj值来进行的 前台进程adj值最低,代表进程优先级最高,空进程adj值越高,最容易被kill,对于相等优先级的进程:使用的内存越多越容易被杀死。

一、LMK机制

        LMK 全称 Low Memory Killer。在Android中,即使当用户退出应用程序后,应用进程也还会存在内存中,方便下次可以快速进入应用而不需要重新创建进程。这样带来的直接影响就是由于进程数量越来越多,系统内存会越来越少,这个时候就需要杀死一部分进程来缓解内存压力。至于哪些进程会被杀死,这个时候就需要用到 Low Memory Killer 机制来进行判定。

        Android 的 Low Memory Killer 基于 Linux 的 OOM 机制, 在 Linux 中,内存是以页面为单位分配的,当申请页面分配时如果内存不足会通过以下流程选择 bad 进程来杀掉从而释放内存。

alloc_pages -> out_of_memory() -> select_bad_process() -> badness() 

        LMK 驱动层在用户空间指定了一组内存临界值及与之一一对应的一组 oom_adj 值,当系统剩余内存位于内存临界值中的一个范围内时,如果一个进程的 oom_adj 值大于或等于这个临界值对应的

相关文章:

  • 网络库OKHTTP(2)面试题
  • uml知识点学习
  • css 特别样式记录
  • 面试题:线程池中线程抛了异常,该如何处理?
  • 关于我对 jeecg-boot 的项目理解、使用心得和改进建议
  • 项目管理之5W2H项目定义法
  • linux 下的java gate服务断掉的原因及解决思路
  • JDK版本和Gradle版本配套关系
  • uniapp 安装 u-view 组件库
  • spring面试常遇见的问题(01)
  • alsa音频pcm设备之i2c调试
  • C调用Objective-C的类和方法
  • JSX的本质
  • 高级深入--day34
  • 罗技鼠标接收器丢失或损坏后用另一个接收器配对的方法
  • SQL数据库管理工具RazorSQL mac中文版特点与功能
  • 网络安全常见问题隐患及其应对措施
  • web前端面试-- http的各个版本的区别(HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP/3.0)
  • 类概述介绍
  • 【监督学习】基于合取子句进化算法(CCEA)和析取范式进化算法(DNFEA)解决分类问题(Matlab代码实现)
  • 纽约大都会博物馆展“萨金特与巴黎”:从艺术生到明星画家
  • 叙利亚多地遭以色列空袭
  • 美国多地爆发集会抗议特朗普政府多项政策
  • 十二届上海市委第六轮巡视全面进驻,巡视组联系方式公布
  • 许峰已任江苏省南京市副市长
  • 浙江官宣:五一假期,没电、没气、没油车辆全部免费拖离高速