Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动Android低内存杀手的时机_Android - Fatal编程技术网

启动Android低内存杀手的时机

启动Android低内存杀手的时机,android,Android,正如我们所知,低内存杀手在一个固定的时间开始。“固定时间”有多长?配置此功能的代码在哪里?Android LMK在某些特定时间不会开始释放内存,但它取决于minfree值: /sys/module/lowmemorykiller/parameters/minfree 例如,如果cat/sys/module/lowmemorykiller/parameters/minfree具有以下值: 1536,2048,4096,5120,5632,6144 这意味着这些值是开始终止这些特定类型进程的内

正如我们所知,低内存杀手在一个固定的时间开始。“固定时间”有多长?配置此功能的代码在哪里?

Android LMK在某些特定时间不会开始释放内存,但它取决于minfree值:

 /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/下的核心应用程序运行,我认为更好的方法是修复服务的内存占用…..尝试检查其消耗的内存量。。。