Android 的设计理念之一,便是应用程序退出, 但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会带来一个问题, 每个进程都有自己独立的内存地址空间,随着应用打开数量的增多, 系统已使用的内存越来越大,就很有可能导致系统内存不足, 那么需要一个能管理所有进程,根据一定策略来释放进程的策略,这便有了 lmk,全称为 LowMemoryKiller(低内存杀手),lmkd 来决定什么时间杀掉什么进程. Android 基于 Linux 的系统,其实 Linux 有类似的内存管理策略——OOM killer,全称 (Out Of Memory Killer), OOM 的策略更多的是用于分配内存不足时触发,将得分最高的进程杀掉。而 lmk 则会每隔一段时间检查一次,当系统剩余可用内存较低时,便会触发杀进程的策略,根据不同的剩余内存档位来来选择杀不同优先级的进程,而不是等到 OOM 时再来杀进程,真正 OOM 时系统可能已经处于异常状态,系统更希望的是未雨绸缪,在内存很低时来杀掉一些优先级较低的进程来保障后续操作的顺利进行。