关闭

关于OOM问题分析

1326人阅读 评论(0) 收藏 举报
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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29551次
    • 积分:552
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:7篇
    • 译文:0篇
    • 评论:2条
    最新评论