【发布时间】:2017-09-28 12:00:14
【问题描述】:
我知道Android LMK是基于Linux OOM,但是google为什么要开发新算法(LMK)呢? LMK比原来的OOM好吗?还是有其他技术原因?
【问题讨论】:
我知道Android LMK是基于Linux OOM,但是google为什么要开发新算法(LMK)呢? LMK比原来的OOM好吗?还是有其他技术原因?
【问题讨论】:
您认为它们具有相同的作用是正确的,即在系统内存不足之前释放内存(通过杀死应用程序)。 但是,决定杀死哪个应用程序的 OOM 和 LMK 算法之间存在细微差别。
LMK会在优先的后台应用程序、隐藏应用程序或暂停的应用程序中尝试杀死(它连接到Android的ActivityManager以知道谁在运行,谁没有运行)。这样,它将让用户继续使用他当前的应用程序并杀死其他应用程序。 LMK 最优先的是让用户顺利使用他的应用程序。其次,LMK一般会避免杀死系统应用程序,更喜欢用户应用程序并让系统运行。
OOM 将尝试杀死使用大部分内存的优先应用程序,而不用担心该应用程序当前已被用户使用,OOM 想要做的是保持整个系统“安全”并运行良好(用户?谁在乎?;))。然而,它可以决定杀死一些对系统有用但又是最大的“内存吞噬者”的系统守护进程。
OOM 杀手算法基于 oom_score,该算法过去基于非常复杂的启发式算法计算,现在主要基于消耗的内存百分比。
【讨论】: