启动Android低内存杀手的时机
正如我们所知,低内存杀手在一个固定的时间开始。“固定时间”有多长?配置此功能的代码在哪里?Android LMK在某些特定时间不会开始释放内存,但它取决于minfree值:启动Android低内存杀手的时机,android,Android,正如我们所知,低内存杀手在一个固定的时间开始。“固定时间”有多长?配置此功能的代码在哪里?Android LMK在某些特定时间不会开始释放内存,但它取决于minfree值: /sys/module/lowmemorykiller/parameters/minfree 例如,如果cat/sys/module/lowmemorykiller/parameters/minfree具有以下值: 1536,2048,4096,5120,5632,6144 这意味着这些值是开始终止这些特定类型进程的内
/sys/module/lowmemorykiller/parameters/minfree
例如,如果cat/sys/module/lowmemorykiller/parameters/minfree
具有以下值:
1536,2048,4096,5120,5632,6144
这意味着这些值是开始终止这些特定类型进程的内存阈值
FOREGROUND_APP:1536
VISIBLE_APP:2048
SECONDARY_SERVER:4096
HIDDEN_APP:5120
CONTENT_PROVIDER:5632
EMPTY_APP:6144
例如,当系统中的可用内存(RAM)小于(6144*4/1024)=24MB时,LMK将开始终止
EMPTY_APP
进程。类似地,如果静态内存条件没有改善,它将在EMPTY\u APP->CONTENT\u PROVIDER->….->前台\u APP中开始终止进程(最后一个终止,这应该永远不会发生)。在异步情况下,LMK由内核分页守护进程(kswapd)计时。因此,我认为您可以深入研究kswapd控制流,以确定其唤醒时间是否有界,这将部分回答您关于时间约束的问题
LMK shrinker回调也可以在kswapd上下文之外调用。当系统执行直接同步页面回收时会发生这种情况(请参见.mm/page_alloc.c)
参考注释:
相关SO问题/答案
你的问题不清楚。可以在你的问题中添加一些额外的信息。我有一个在屏幕上活动的后台粘性服务(使用系统窗口警报),LMK在48秒后被杀死并启动。有没有办法设定高优先级?此服务作为/system/priv-app/下的核心应用程序运行,我认为更好的方法是修复服务的内存占用…..尝试检查其消耗的内存量。。。