1. 程式人生 > >low memory killer

low memory killer

  Low Memory Killer(低記憶體管理)

  對於PC來說,記憶體是至關重要。如果某個程式發生了記憶體洩漏,那麼一般情況下系統就會將其程序Kill掉。Linux中使用一種名稱為OOM(Out Of Memory,記憶體不足)的機制來完成這個任務,該機制會在系統記憶體不足的情況下,選擇一個程序並將其Kill掉。Android則使用了一個新的機制——Low Memory Killer來完成同樣的任務。下面首先來看看Low Memory Killer機制的原理以及它是如何選擇將被Kill的程序的。

  1.Low Memory Killer的原理和機制

  Low Memory Killer在使用者空間中指定了一組記憶體臨界值,當其中的某個值與程序描述中的oom_adj值在同一範圍時,該程序將被Kill掉。通常,在“/sys/module/lowmemorykiller / parameters/adj”中指定oom_adj的最小值,在“/sys/module/lowmemorykiller/parameters/minfree”中儲存空閒頁面的數量,所有的值都用一個逗號將其隔開且以升序排列。比如:把“0,8”寫入到/sys/module/lowmemorykiller/parameters/adj中,把“1024,4096”寫入到/sys/module/lowmemory- killer/parameters/minfree中,就表示當一個程序的空閒儲存空間下降到4096個頁面時,oom_adj值為8或者更大的程序會被Kill掉。同理,當一個程序的空閒儲存空間下降到1024個頁面時,oom_adj值為0或者更大的程序會被Kill掉。我們發現在lowmemorykiller.c中就指定了這樣的值,如下所示: