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

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

文章目录

一、Low Memory Killer 机制

二、Low Memory Killer 参数





一、Low Memory Killer 机制


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


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


image.png


打开应用越多 , 后台缓存的应用也就越多 ; 如果出现内存不足的情况 , 系统会根据 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:/ #

image.png



分析 /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 个配置的内存数值 , 就会按照顺序 , 依次向上逐步杀进程 ;


目录
相关文章
|
18天前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android 消息处理机制估计都被写烂了,但是依然还是要写一下,因为Android应用程序是通过消息来驱动的,Android某种意义上也可以说成是一个以消息驱动的系统,UI、事件、生命周期都和消息处理机制息息相关,并且消息处理机制在整个Android知识体系中也是尤其重要,在太多的源码分析的文章讲得比较繁琐,很多人对整个消息处理机制依然是懵懵懂懂,这篇文章通过一些问答的模式结合Android主线程(UI线程)的工作原理来讲解,源码注释很全,还有结合流程图,如果你对Android 消息处理机制还不是很理解,我相信只要你静下心来耐心的看,肯定会有不少的收获的。
59 3
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
17天前
|
消息中间件 安全 Kafka
Python IPC机制全攻略:让进程间通信变得像呼吸一样自然
【8月更文挑战第2天】在编程领域中,进程间通信(IPC)作为连接独立运行单元的关键桥梁,其重要性不言而喻。本文以Python为例,深入探讨了IPC的各种机制。首先对比了管道与消息队列:管道作为一种基础IPC机制,适用于简单场景;而消息队列通过第三方库如RabbitMQ或Kafka支持更复杂的多生产者多消费者模型,具备高并发处理能力。
16 1
|
17天前
|
消息中间件 安全 数据库
动手实操!Python IPC机制,打造高效协同的进程军团
【8月更文挑战第2天】在 software development 领域, Python 的进程间通信 (IPC) 能力对应用性能与稳定性至关重要。Python 提供了多样化的 IPC 机制, 如管道、消息队列、套接字、共享内存等, 每种都有独特优势。本文以动手实践为主, 使用 `multiprocessing` 模块演示 IPC 的实现。示例代码展示了如何利用 `Queue` 在进程间安全高效地传输数据。
24 0
|
1月前
|
Python
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
|
1月前
|
Python
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
|
2月前
|
调度
操作系统之进程调度机制
操作系统之进程调度机制
34 1
|
1月前
|
消息中间件 Java 调度
线程和进程的区别及其在操作系统中的实现机制
线程和进程的区别及其在操作系统中的实现机制
|
2月前
|
安全 算法 数据安全/隐私保护
探索iOS与Android的隐私保护机制
【6月更文挑战第5天】在数字时代,隐私保护已成为用户最关心的问题之一。iOS和Android作为两大主流操作系统,各自发展出了独特的隐私保护技术。本文将深入探讨这两个平台在隐私保护方面的策略、技术和挑战。
49 3
|
2月前
|
Android开发
38. 【Android教程】Handler 消息传递机制
38. 【Android教程】Handler 消息传递机制
27 2
|
2月前
|
Android开发 虚拟化 异构计算
一文搞定Android VSync机制来龙去脉
一文搞定Android VSync机制来龙去脉
72 0

相关实验场景

更多