Android进程管理之LRU weight机制
2018-02-05 22:58
555 查看
借鉴自Android的设计与实现
LRU是最近最少使用的意思。
Android应用程序进程(包括建立了应用程序进程运行环境的system_server进程)启动后,都会在AMS的成员变量中保存其ProcessRecord信息。
保存ProcessRecord的方式有许多种,例如在mPidsSelfLocked和mProcessNames成员变量中,前者是PID为键,后者是进程名为键。
这种方式的存储顺序通常与应用程序组件的启动顺序相同,用于调度应用程序组件。
此外mLruProcesses以LRU顺序存储了当前运行的应用程序进程信息,mLruProcesses中的第一个元素就是最近最少使用的进程对应的ProcessRecord,用于管理应用程序进程。
3种情况可以更新mLruProcesses:
1.应用程序异常退出:调用handleAppDiedLocked更新mLruProcesses
2.显式“杀死”指定进程:调用AMS显式“杀死”进程时需要更新mLruProcesses
3.启动和调度应用程序4大组件:调用updateLruProcessLocked更新mLruProcesses
应用程序异常退出后,其进程也会被“杀死”。因此1、2情况都是从mLruProcesses列表中删除该进程信息。
更新入口
源码变化了很多,不贴了
updateLruProcessInternalLocked的主要工作
1.为指定的进程计算LRU序列号和LRU weight
2.根据lru weight值将指定进程信息插入mLruProcesses表示的进程LRU列表中,lru weight的值越大,在列表中的位置越靠后
3.如果进程使用了Content Provider或者Service,还需要更新Content Provider或者Service所在进程的lru weight及其在LRU列表中的位置
4.根据参数oomAdj的值决定是否同时调整OOM adj的值。
updateLruProcessInternalLocked方法调整的只是进程的lru weight和进程在LRU列表中的位置,并不会直接参与进程的管理,但是当其参数oomAdj的值为true时,便可以调用updateOomAdjLocked方法更新OOM adj信息,进而影响进程的管理。
LRU是最近最少使用的意思。
Android应用程序进程(包括建立了应用程序进程运行环境的system_server进程)启动后,都会在AMS的成员变量中保存其ProcessRecord信息。
保存ProcessRecord的方式有许多种,例如在mPidsSelfLocked和mProcessNames成员变量中,前者是PID为键,后者是进程名为键。
这种方式的存储顺序通常与应用程序组件的启动顺序相同,用于调度应用程序组件。
此外mLruProcesses以LRU顺序存储了当前运行的应用程序进程信息,mLruProcesses中的第一个元素就是最近最少使用的进程对应的ProcessRecord,用于管理应用程序进程。
3种情况可以更新mLruProcesses:
1.应用程序异常退出:调用handleAppDiedLocked更新mLruProcesses
2.显式“杀死”指定进程:调用AMS显式“杀死”进程时需要更新mLruProcesses
3.启动和调度应用程序4大组件:调用updateLruProcessLocked更新mLruProcesses
应用程序异常退出后,其进程也会被“杀死”。因此1、2情况都是从mLruProcesses列表中删除该进程信息。
更新入口
源码变化了很多,不贴了
updateLruProcessInternalLocked的主要工作
1.为指定的进程计算LRU序列号和LRU weight
2.根据lru weight值将指定进程信息插入mLruProcesses表示的进程LRU列表中,lru weight的值越大,在列表中的位置越靠后
3.如果进程使用了Content Provider或者Service,还需要更新Content Provider或者Service所在进程的lru weight及其在LRU列表中的位置
4.根据参数oomAdj的值决定是否同时调整OOM adj的值。
updateLruProcessInternalLocked方法调整的只是进程的lru weight和进程在LRU列表中的位置,并不会直接参与进程的管理,但是当其参数oomAdj的值为true时,便可以调用updateOomAdjLocked方法更新OOM adj信息,进而影响进程的管理。
相关文章推荐
- Android内存进程管理机制
- Android内存进程管理机制
- android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)
- Android内存进程管理机制
- Android进程线程管理机制与组件生命周期解析
- Android进程管理机制和内存机制
- Android内存进程管理机制
- Android进程管理机制及优化+自动内存管理程序
- Android 进程管理机制及优化
- Android进程管理机制及优化
- 【朝花夕拾】Android性能篇之(六)Android进程管理机制
- Android进程管理机制及优化
- android 进程/线程管理(四)----消息机制的思考(自定义消息机制)
- Android进程管理机制及优化
- Android基础系列-----------Android进程/线程管理应用示例(Android中的消息队列和线程队列机制)
- android 进程/线程管理(一)----消息机制的框架
- Android IPC进程间通讯机制学习笔记
- Android系统中的进程管理:进程的创建
- Android中进程之间通信的机制--Activity
- 三、android的窗口机制分析------UI管理系统