前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 进程保活】Low Memory Killer 机制

【Android 进程保活】Low Memory Killer 机制

作者头像
韩曙亮
发布2023-03-29 09:23:57
1.2K0
发布2023-03-29 09:23:57
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、Low Memory Killer 机制


Android 中有一套 Low Memory Killer 机制 , 应用退出后 , 其进程不会马上被杀死 , 而是缓存起来 ;

如下图所示 , 点击回退键 , 使应用退出后 , 然后点击 Menu 键 , 从任务栈列表中扔可以看到退出的应用 , 此时点击该任务栈 , 仍可以将该应用拉起到前台 ;

在这里插入图片描述
在这里插入图片描述

打开应用越多 , 后台缓存的应用也就越多 ; 如果出现内存不足的情况 , 系统会根据 Low Memory Killer 机制 判定哪些进程被回收 , 为新的进程提供充足的内存 ;

二、Low Memory Killer 参数


查看 Android 设备中的 Low Memory Killer 机制 相关参数 ;

进入 Android 命令行 , 获取 root 权限后 , 执行如下代码 :

代码语言:javascript
复制
cat /sys/module/lowmemorykiller/parameters/minfree

执行上述命令 , 可以看到该配置文件中配置了

6

个数值 , 其单位是

\rm 4 KB

,

代码语言:javascript
复制
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

个数值 , 单位

\rm 4 KB

;

代码语言:javascript
复制
18432,23040,27648,32256,55296,80640

最后一个数字

80640

, 乘以

\rm 4KB

, 除以

1024

, 最后得到 ;

\rm \cfrac{80640 \times 4KB}{1024 KB / MB} = 315 MB

该配置的含义是如果当前可用内存小于

\rm 315 MB

, 就会将 空进程 杀掉 ;

内存不足时杀进程的优先顺序 :

  • 18432 : 内存小于
\rm 18432 \times 4KB

时 , 杀 " 前台进程 " ;

  • 23040 : 内存小于
\rm 23040 \times 4KB

时 , 杀 " 可见进程 " ;

  • 27648 : 内存小于
\rm 27648 \times 4KB

时 , 杀 " 服务进程进程 " ;

  • 32256 : 内存小于
\rm 32256 \times 4KB

时 , 杀 " 后台进程 " ;

  • 55296 : 内存小于
\rm 55296 \times 4KB

时 , 杀 " ContentProvider 进程 " ;

  • 80640 : 内存小于
\rm 80640 \times 4KB

时 , 杀 " 空进程 " ;

不同的手机中 , 对应的数值不同 , 越低端的手机 , 内存阈值越小 ;

如果可用内存低于上述的

6

个配置的内存数值 , 就会按照顺序 , 依次向上逐步杀进程 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Low Memory Killer 机制
  • 二、Low Memory Killer 参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档