当前位置: 首页 > 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代码实现)
  • 江山做网站/北京seo课程
  • 网站建设技术/北京网站推广机构
  • 国外美甲网站模板/互联网营销师培训费用是多少
  • 做诈骗网站/湖人最新消息
  • 茂名网站开发公司推荐/b2b平台推广
  • 外贸营销策略/网站seo设计