[info] android e l'uso della ram
L'USO DELLA RAM IN ANDROID
Da quando ho compiuto i primi passi in Android (conoscendo il mondo Linux da anni), di tanto in tanto mi capita di leggere post di persone che si lamentano dell'eccessivo consumo di RAM del proprio dispositivo/ROM, e con saccenza e orgoglio incensano il proprio dispositivo/ROM perchè hanno 10Mb di RAM libera in più. Forse sarebbe il caso di capire come funzionano le cose, per usare i nostri device nel modo migliore, e smetterla di sputare sentenze. Se avrete la pazienza di leggere capirete ciò che voglio dirvi.
1) In Android, processi e applicazioni sono due cose ben distinte. Un'app può restare attiva in background senza che alcun processo consumi risorse del nostro device. Android tiene l'app in memoria in modo che possa essere (ri)lanciata più velocemente e ritorna al suo stato precedente. Quando la RAM sta per essere esaurita, Android comincerà automaticamente a killare app di suo, cominciando da quelle usate meno recentemente.
2) Android usa la RAM in modo assai diverso da Windows, e in modo assai simile a Linux. In Android avere la RAM quasi completamente occupata è normale ed è sintomo di un utilizzo ottimale ed ottimizzato della stessa. Ciò significa che se si riapre un'app precedentemente aperta, questa si aprirà molto più velocemente. Quindi mentre Android (e Linux) usano la RAM in maniera efficiente, molti utenti vedendo la memoria quasi completamente piena, pensano che ciò comporterà dei rallentamenti al proprio device. FALSO! In realtà è la CPU (che è usata solo per le app aperte in quel momento) ad essere quasi sempre il collo di bottiglia, rallentando il device e consumando più batteria.
3) No ai task killers. Essi agiscono in base al pensiero errato che liberare memoria sui device Android sia una cosa buona. E killano app in base alla memoria RAM consumata. Ma come abbiamo detto sono i cicli di CPU il vero problema. Inoltre killare un'app comporta ulteriori cicli di CPU e spesso l'app stessa si riattiva poco dopo, richiedendo ulteriori cicli di CPU. La cosa migliore è dunque lasciar funzionare il dispositivo così come è stato concepito, magari freezando o eliminando app inutili.
4) Detto questo non tutte le app sono create in modo simile. A volte killando un'app si può avere la sensazione che il dispositivo sia più prestante. Ciò in realtà è dato dal fatto che probabilmente quell'app non è stata concepita bene e non ha un codice "pulito" (ad es. tenta di connettersi alla rete quando non sarebbe il caso). Può essere utile in questi casi killare quella particolare app che crea draining o rallentamenti, se non possiamo fare a meno di disinstallarla. O meglio ancora eliminare quell'app e sostituirla. Restare lontani dai task killer. E smetterla di valutare la bontà di una rom o di un sistema in base alla RAM libera!
Una buona norma è invece quella di riavviare di tanto in tanto il nostro device per consentire la completa pulizia della RAM.
PICCOLO APPROFONDIMENTO SULL'USO DELLA RAM IN LINUX
Prima di tutto definiamo il significato di alcuni termini:
Cache
È una porzione di memoria utilizzata per conservare o trattenere informazioni di uso frequente, in modo da non doverle richiedere ogni volta alla fonte originaria. Evita richieste ridondanti nel breve periodo.
Buffer
È una cache “limitata”. È utilizzata per il trasferimento dei dati, in pratica è dove vengono memorizzate le informazioni nella fase di passaggio da una fonte ad un’altra.
Swap
È l’estensione della capacità di memoria volatile complessiva del computer, oltre il limite imposto dalla RAM installata, ottenuta mediante l’utilizzo di spazio su un altro supporto fisico. Quando la memoria RAM non è più sufficiente per contenere tutte le informazioni che servono ai programmi, il sistema operativo si fa carico di spostare una certa quantità di dati (quelli meno recentemente utilizzati) dalla memoria volatile a quella di massa, liberando quindi una parte della RAM per permettere il corretto funzionamento dei programmi.
Detto ciò, supponiamo su di un pc con 1 GB di RAM di avere in esecuzione un tot di processi che occupano complessivamente 150 MB. Come vengono gestiti i rimanenti 850 MB di memoria liberi?
Linux ottimizza la gestione della memoria libera utilizzandola come cache e velocizzando così il sistema e l’accesso alle informazioni.
Ovviamente qualora si avviasse un’altra applicazione e si rendesse quindi necessario l’allocazione di altra memoria RAM, in aggiunta ai 150 MB effettivamente utilizzati, Linux libera il quantitativo necessario richiesto sottraendolo alla cache. Nel caso in cui non ci fosse memoria disponibile, il sistema farà ricorso alla memoria Swap.
Ecco quindi spiegato perché risulterà quasi sempre occupata una quantità di memoria superiore a quella effettivamente utilizzata dai programmi.
In pratica in Linux tutta o quasi la memoria RAM è allocata per ottimizzare l’esecuzione dei processi.
In Linux (e in Android) RAM LIBERA = RAM SPRECATA! ;)