关于OOM问题分析

1.[FAQ02683]如何将一个app 设置为持久app, 不被low memory kill 关闭
[Description]
如何将一个app 设置为常住app, 不被low memory kill 关闭
[Keyword]
app 持久 persistent
[Solution]
1. 将app 的manifest.xml 中的 application 中添加属性
android:persistent="true"
2. 对这个APP 使用platform 的签名

3. 放置在system/app 下面

注: 一个app 被设置为 persistent 后,将很难被low memory kill 杀掉(oom_adj=-12),请在设置之前仔细确认是否必须,否则将浪费掉memory。

2.[FAQ10559]如何更新LMK Low Memory Killer 的
阈值
[Description]
如何更新LMK Low Memory Killer 的阈值
[Keyword]
LMK Low Memory Killer 阈值 Threshold adj
[Solution]
Low Memory Killer 的阈值分成两个数组,一个是adj 数组,描述process 所对应的oom_adj,另外一个是minfree 数组,描述process 所对应的memory 的阈值。
上层可以直接通过读写:
/sys/module/lowmemorykiller/parameters/adj
/sys/module/lowmemorykiller/parameters/minfree
来进行调整.minfree 以KB 为单位
在JB 以后版本,AMS 起到后,将根据屏幕分辨率以及内存大小调整默认的LMK 的阈值,对应的具体的代码在:
frameworks/base/services/java/com/android/server/am/ProcessList.java#updat
eOomLevel
可以修正这个updateOomLevel 来调整LMK 的这两个参数
注意, 从JB9.MP 后,LMK 自动将oom_adj 转换成 oom_score_adj ,即写入时依旧是
按照oom_adj 写入,而读取出来时,则是oom_score_adj.
if oom_adj = 15 then oom_score_adj = 1000;
else oom_score_adj = oom_adj * 1000/17;
简单的oom_adj 与oom_score_adj 的转换表格:
oom_adj  oom_score_adj
-16             -941
-12             -705
0                  0
1                 58
2                117
4                235
6                352
9                529
15              1000

问题3:清除掉已经被kill的应用的资源
 JAVACRASH on system.server java.lang.OutOfMemoryError at android.os.FileUtils.readTextFile


WindowManagerService: Cleanup the starting window resources   
When an application dies very early after being launched, some resources ViewRootImpl are left in system_server.   
This patch removes those resources when the window is removed from WindowManagerService.  




   public void removeWindowLocked(Session session, WindowState win) {       ...  
        if ( (win.mAppToken != null) && (win.mAppToken.startingView != null) ) {  
            View view = win.mAppToken.startingView;  
            win.mAppToken.startingView = null;  
            mPolicy.removeStartingWindow(null, view);  
        }  
      ...  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值