Android LMK 和 Linux OOM 有什么区别

Lee*_*Yue 4 android memory-management

我知道这Android LMK是基于Linux OOM,但为什么谷歌要开发一种新算法(LMK)?LMK 比原来的 OOM 好吗?还是有其他技术原因?

Céd*_*ien 5

您认为它们都具有相同的作用,在系统内存不足之前释放内存(通过终止应用程序)是正确的。但是,OOM​​ 和 LMK 算法之间存在细微差别,这将决定要杀死哪个应用程序。

LMK 会尝试杀死优先后台应用、隐藏应用或暂停的应用(它连接到 Android 的 ActivityManager 以知道谁在运行,谁不在)。这样,它将让用户继续使用他当前的应用程序并杀死其他应用程序。LMK 的首要任务是让用户顺利使用他的应用程序。其次,LMK一般会避免杀死系统应用程序,优先选择用户应用程序并让系统运行。

OOM 会尝试杀死使用大部分内存的优先应用程序,而不用担心该应用程序当前被用户使用的事实,OOM 想要做的是保持整个系统“安全”并运行良好(用户?谁在乎 ? ;) )。然而,它可以决定杀死一些对系统有用但最大的“内存吞噬者”的系统守护进程。OOM 杀手算法基于oom_score过去非常复杂的启发式计算,现在主要基于消耗的内存百分比。