AMS 几种主动清理内存的几种方式

 

一、通过杀empty进程和cache进程来释放内存

  1. 如果空进程的个数大于mConstants.CUR_TRIM_EMPTY_PROCESSES(CUR_TRIM_EMPTY_PROCESSES 的这个依据配置值的不同而不同,具体的可以见updateMaxCachedProcesses这个函数),并且该应用的上次活跃的时间,大于半个小时,这里的活跃是指该应用有相关组件在活动,比如:在处理广播
  2. 空进程个数大于了最大限制
  3. 当cache进程达到阈值的时候,就开始杀cache进程

具体的代码位置如下:

    文件路径:frameworks/base/services/core/java/com/android/server/am/OomAdjuster.java
    方法:updateOomAdjLocked(String oomAdjReason) 
    代码片段:
    .....
     final long oldTime = now - ProcessList.MAX_EMPTY_TIME; // static final long 
    MAX_EMPTY_TIME = 30 * 60 * 1000;
    .....
    switch (app.getCurProcState()) {
                    case PROCESS_STATE_CACHED_ACTIVITY:
                    case ActivityManager.PROCESS_STATE_CACHED_ACTIVITY_CLIENT:
                        mNumCachedHiddenProcs++;
                        numCached++;
                        if (app.connectionGroup != 0) {
                            if (lastCachedGroupUid == app.info.uid
                                    && lastCachedGroup == app.connectionGroup) {
                            // If this process is the next in the same group, we don't
                            // want it to count against our limit of the number of cached
                            // processes, so bump up the group count to account for it.
                                numCachedExtraGroup++;
                            } else {
                                lastCachedGroupUid = app.info.uid;
                                lastCachedGroup = app.connectionGroup;
                            }
                        } else {
                            lastCachedGroupUid = lastCachedGroup = 0;
                        }
                        if ((numCached - numCachedExtraGroup) > cachedProcessLimit) {
                            app.kill("cached #" + numCached, true);
                        }
                        break;
                    case PROCESS_STATE_CACHED_EMPTY:
     
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值