Android ha il suo task killer interno che riconosce quando si sta esaurendo la memoria disponibile.In questo caso inizierà a chiudere tutte quelle applicazioni che per lui sono a bassa priorità.
Le applicazioni che usate meno o che non sono fondamentali per il telefono saranno chiuse prima. Le ultime ad essere chiuse, saranno invece le applicazioni che sono attualmente in primo piano, e che quindi sono applicazioni fondamentali, come la sveglia per esempio.
Quando Android chiude le applicazioni per liberare memoria, lo fa in maniera molto intelligente in quanto la prossima volta che viene riaperta una applicazione chiusa, fa in modo che sia ripristinata, come se non fosse mai stata chiusa (questo è quello che iOS al momento, chiama multitasking, ma in realtà è solo un freezare l’applicazione).
Android raggruppa i task in esecuzione in 6 diverse categorie, ordinate dalle più importanti alle meno importanti:
FOREGROUND_APP, VISIBLE_APP, SECONDARY_SERVER, HIDDEN_APP, CONTENT_PROVIDER, EMPTY_APP
Foreground App: questa è l'App che in quel momento è avviata e visibile sullo schermo, è praticamente l'applicazione correntemente utilizzata dall'utente.
Visible App: queste sono invece le App che stanno in esecuzione ma NON sono visibili sullo schermo, in questa categoria vanno quelle app che magari sono state appena chiuse e che devono continuare a fare alcune operazioni, oppure alcune app specificatamente sviluppate per girare anche quando non visualizzano niente a video.
Secondary Server: queste non sono vere e proprie App ma sono servizi, i servizi sono dei task speciali che rilasciano funzionalità specifiche e che vengono normalmente sfruttate da altre App che ne hanno bisogno. In questa categoria vanno quindi quei servizi che sono ancora "vivi" perché stanno lavorando o perché hanno appena finito di fare la loro funzione.
Hidden App: queste sono quelle procedure (servizi) che NON sono più vive (perché magari hanno finito da tempo di essere utilizzate) e vengono inserite in uno stato dormiente (IDLE) nell'attesa di essere riutilizzate.Android NON cancella a priori queste procedure perché se le tiene in memoria possono essere "riesumate" più velocemente in caso di bisogno.
Content Provider: i content provider sono anch'essi servizi che però hanno il compito di fornire dati (di qualsiasi genere, un contatto, un sms, un filmato e così via). I content provider sono molto importanti perché tantissime App ne fanno uso, ad esempio Facebook piuttosto che Skype ne fanno uso per reperire i dati necessari al loro corretto funzionamento
Empty App: queste sono App che ormai sono state chiuse e che non stanno più girando. Di fatto sono App che non sono nemmeno più di tipo Visible. Queste App NON vengono cancellate a priori perché nel caso vengano riavviate, il sistema le potrà tirare su molto più velocemente.
Questi i valori standard usati da Samsung

FOTO1
In queste 6 categorie si riflettono i 6 limiti di memoria che sono configurati per il
lowmemorykiller del kernel. La configurazione del lowmemorykiller del kernel, possedendo i privilegi di root, è possibile modificarla in tempo reale!
Ciò è possibile modificando un file in cui sono indicate le 6 soglie di memoria con cui il sistema fa agire il suo Task Killer interno! Il file è ovviamente uno script da far eseguire all'avvio, con il seguente comando:/sys/module/lowmemorykiller/parameters/minfree
Se andiamo a vederne il contenuto si dovrebbe leggere qualcosa di simile a questo:
1536,2048,4096,5120,5632,6144
Questi sono i limiti di memoria al di sotto dei quali il sistema comincia a killare i processi, ma attenzione perché questi valori sono in pagine di memoria!
Ovvero 1 pagina = 4 kilobytes
Quindi nell’esempio mostrato sopra, significa che Android inizierà a killare i processi nella categoria EMPTY_APP quando la memoria andrà al di sotto di 24 Mb (valore che si ottiene dalla conversione pagine->Mb ossia 6144*4/1024) ed inizierà a killare CONTENT_PROVIDERS non usati da nulla se il valore va al di sotto di 22 Mb (5632*4/1024) ecc. ecc.