Android AMS——进程LRU列表更新(十九)

        AMS对进程的管理主要体现在两个方面:        

  • 进程LRU列表动态更新:动态调整进程在mLruProcesses列表的位置
  • 进程优先级动态调整:实际是调整进程oom_adj的值。

        这两项调整和系统进行自动回收有关,当内存不足时,系统会关闭一些进程来释放内存,下面就依据这两方面来看下 AMS 是如何管理进程的。

一、LRU列表

1、列表数据结构

ActivityManagerService 

源码位置:/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

final ArrayList<ProcessRecord> mLruProcesses = new ArrayList<ProcessRecord>();

        AMS 启动的每个进程都会被添加到 LRU 列表中,这个 LRU 列表不是随意排序的或者仅仅根据先后顺序排序的,而是根据具体规则进行计算,以及进程的当前状态进行改变的、 LRU 列表中存储的是一个个 ProcessRecord,AMS 中使用 ProcessRecord 来代表一个进程、内部存储了一个进程所有的信息。

        LRU列表被分为3段:

  • hasActivity:带Activity的进程

相关推荐

  1. Android AMS——进程LRU列表更新

    2024-03-20 19:06:02       20 阅读
  2. Android AMS——进程优先级更新(二

    2024-03-20 19:06:02       22 阅读
  3. 第二章 控制到 XML 模式的映射 - 类名列表

    2024-03-20 19:06:02       28 阅读
  4. 【leetcode】LRU & LFU

    2024-03-20 19:06:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 19:06:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 19:06:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 19:06:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 19:06:02       20 阅读

热门阅读

  1. Http的缓存有哪些

    2024-03-20 19:06:02       22 阅读
  2. rust学习(简单handler实现)

    2024-03-20 19:06:02       22 阅读
  3. 第1章:Python基础:变量与表达式的深度解析

    2024-03-20 19:06:02       21 阅读
  4. Redis热点数据和冷数据的理解

    2024-03-20 19:06:02       20 阅读
  5. 洛谷刷题 | P8635 [蓝桥杯 2016 省 AB] 四平方和

    2024-03-20 19:06:02       21 阅读
  6. 用c语言统计m~n之间素数的个数,并求素数的和。

    2024-03-20 19:06:02       18 阅读
  7. 定时任务框架

    2024-03-20 19:06:02       22 阅读
  8. Rust基础教程

    2024-03-20 19:06:02       19 阅读