文章目录
一、Low Memory Killer 机制
二、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
执行上述命令 , 可以看到该配置文件中配置了 6 66 个数值 , 其单位是 4 K B \rm 4 KB4KB ,
C:\Users\octop>adb shell walleye:/ $ su walleye:/ # cat /sys/module/lowmemorykiller/parameters/minfree 18432,23040,27648,32256,55296,80640 walleye:/ #
分析 /sys/module/lowmemorykiller/parameters/minfree 配置文件中的 6 66 个数值 , 单位 4 K B \rm 4 KB4KB ;
18432,23040,27648,32256,55296,80640
最后一个数字 80640 8064080640 , 乘以 4 K B \rm 4KB4KB , 除以 1024 10241024 , 最后得到 ;
80640 × 4 K B 1024 K B / M B = 315 M B \rm \cfrac{80640 \times 4KB}{1024 KB / MB} = 315 MB
1024KB/MB
80640×4KB
=315MB
该配置的含义是如果当前可用内存小于 315 M B \rm 315 MB315MB , 就会将 空进程 杀掉 ;
内存不足时杀进程的优先顺序 :
18432 : 内存小于 18432 × 4 K B \rm 18432 \times 4KB18432×4KB 时 , 杀 " 前台进程 " ;
23040 : 内存小于 23040 × 4 K B \rm 23040 \times 4KB23040×4KB 时 , 杀 " 可见进程 " ;
27648 : 内存小于 27648 × 4 K B \rm 27648 \times 4KB27648×4KB 时 , 杀 " 服务进程进程 " ;
32256 : 内存小于 32256 × 4 K B \rm 32256 \times 4KB32256×4KB 时 , 杀 " 后台进程 " ;
55296 : 内存小于 55296 × 4 K B \rm 55296 \times 4KB55296×4KB 时 , 杀 " ContentProvider 进程 " ;
80640 : 内存小于 80640 × 4 K B \rm 80640 \times 4KB80640×4KB 时 , 杀 " 空进程 " ;
不同的手机中 , 对应的数值不同 , 越低端的手机 , 内存阈值越小 ;
如果可用内存低于上述的 6 66 个配置的内存数值 , 就会按照顺序 , 依次向上逐步杀进程 ;