【Android 进程保活】Low Memory Killer 机制
一、Low Memory Killer 机制
Android 中有一套 Low Memory Killer 机制 , 应用退出后 , 其进程不会马上被杀死 , 而是缓存起来 ;
如下图所示 , 点击回退键 , 使应用退出后 , 然后点击 Menu 键 , 从任务栈列表中扔可以看到退出的应用 , 此时点击该任务栈 , 仍可以将该应用拉起到前台 ;
打开应用越多 , 后台缓存的应用也就越多 ; 如果出现内存不足的情况 , 系统会根据 Low Memory Killer 机制 判定哪些进程被回收 , 为新的进程提供充足的内存 ;
二、Low Memory Killer 参数
查看 Android 设备中的 Low Memory Killer 机制 相关参数 ;
进入 Android 命令行 , 获取 root 权限后 , 执行如下代码 :
cat /sys/module/lowmemorykiller/parameters/minfree
- 1
执行上述命令 , 可以看到该配置文件中配置了 6 6 6 个数值 , 其单位是 4 K B \rm 4 KB 4KB ,
C:\Users\octop>adb shell
walleye:/ $ su
walleye:/ # cat /sys/module/lowmemorykiller/parameters/minfree
18432,23040,27648,32256,55296,80640
walleye:/ #
- 1
- 2
- 3
- 4
- 5
分析 /sys/module/lowmemorykiller/parameters/minfree
配置文件中的 6 6 6 个数值 , 单位 4 K B \rm 4 KB 4KB ;
18432,23040,27648,32256,55296,80640
- 1
最后一个数字 80640 80640 80640 , 乘以 4 K B \rm 4KB 4KB , 除以 1024 1024 1024 , 最后得到 ;
80640 × 4 K B 1024 K B / M B = 315 M B \rm \cfrac{80640 \times 4KB}{1024 KB / MB} = 315 MB 1024KB/MB80640×4KB=315MB
该配置的含义是如果当前可用内存小于 315 M B \rm 315 MB 315MB , 就会将 空进程 杀掉 ;
内存不足时杀进程的优先顺序 :
- 18432 : 内存小于 18432 × 4 K B \rm 18432 \times 4KB 18432×4KB 时 , 杀 " 前台进程 " ;
- 23040 : 内存小于 23040 × 4 K B \rm 23040 \times 4KB 23040×4KB 时 , 杀 " 可见进程 " ;
- 27648 : 内存小于 27648 × 4 K B \rm 27648 \times 4KB 27648×4KB 时 , 杀 " 服务进程进程 " ;
- 32256 : 内存小于 32256 × 4 K B \rm 32256 \times 4KB 32256×4KB 时 , 杀 " 后台进程 " ;
- 55296 : 内存小于 55296 × 4 K B \rm 55296 \times 4KB 55296×4KB 时 , 杀 " ContentProvider 进程 " ;
- 80640 : 内存小于 80640 × 4 K B \rm 80640 \times 4KB 80640×4KB 时 , 杀 " 空进程 " ;
不同的手机中 , 对应的数值不同 , 越低端的手机 , 内存阈值越小 ;
如果可用内存低于上述的 6 6 6 个配置的内存数值 , 就会按照顺序 , 依次向上逐步杀进程 ;
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/115448315
- 点赞
- 收藏
- 关注作者
评论(0)