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

最佳答案

您认为它们都有相同的角色是正确的,在系统内存耗尽之前释放内存(通过杀死应用程序)。
但是,oom算法和lmk算法之间有一个微妙的区别,后者将决定要杀死哪个应用程序。
lmk将尝试杀死优先的后台应用程序、隐藏的应用程序或暂停的应用程序(它连接到android的activitymanager以了解谁在运行,谁不在运行)。这样,它将允许用户继续使用当前的应用程序并杀死其他应用程序。lmk最重要的是让用户顺利使用自己的应用程序。其次,lmk一般会避免杀死系统应用程序,更倾向于用户应用程序,让系统运行。
oom将试图杀死使用大部分内存的优先级应用程序,而不必担心这个应用程序当前被用户使用,oom希望做的是保持整个系统的“安全”和正常运行(用户?谁在乎?;)然而,它可以决定杀死一些对系统有用但却是最大的“内存消耗者”的系统守护进程。
oom killer算法是基于oom_score的,它过去是基于非常复杂的启发式算法计算的,现在主要是基于消耗的内存百分比。

10-08 03:31