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 mLruProcesses = new ArrayList();

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

        LRU列表被分为3段:

  • hasAct

你可能感兴趣的:(Android,AMS,android,AMS)