GuideModding

Come liberare memoria ram su Android [Guida]

Buona giornata a tutti, amici di Tuttoapp-android,Come liberare memoria RAM su Android

quest’oggi, grazie ad un mio amico, mi sono soffermato sul funzionamento della gestione ram del firmware Android e, per questo, ho deciso di pubblicare questa guida con lo scopo di illustrare a tutti come liberare memoria ram su Android e come possano essere dannose le app come task killer e/o ibernatori.

Girando sul web molti anzi troppi consigliano di fare uso di queste app “stupefacenti” per risolvere problemi di ram, prestazioni e durata batteria del nostro smartphone, che sia l’ultimo top di gamma o un vecchio telefonino che monti sempre il nostro piccolo robottino.

 

Ma allora… come liberare memoria ram su Android?

Per quanto questo sia il quesito principale cui la nostra guida vuole dare una risposta, non si può spiegare in poche parole come liberare memoria RAM su Android e, per una visione d’insieme che ti chiarifichi completamente le idee, dovrai affrontare una lettura lunga ma, si spera, piacevole.

Allora prima di proseguire, caro utente, prendiamoci un momento di pausa: visto il lavoro che ci aspetta è giusto andare con calma!
Cosa ne dici, intanto, di premiare il mio impegno semplicemente con un mi piace alle pagine presenti nei principali Social Networks o con la condivisione della guida in oggetto?
Guarda nella barra laterale: per noi è importante il tuo supporto! E non esitare a contattarci per qualsiasi dubbio: ecco a te la pagina dei contatti

Funzionamento basilare della ram…

Per sfatare questo mito possiamo cominciare spiegando con semplicità cosa succede quando avviamo un’applicazione: questa occupa RAM. Infatti una volta aperta ad essa verrà riservato uno spazio ben preciso nella memoria RAM, più o meno grande a seconda del peso della nostra applicazione, e verrà creata una java virtual machine anch’essa dedicata (la dalvik virtual machine da android 4.4.4 in giù. Con android 5.0 le cose cambiano un pochino ma questa è un’altra storia), ed essa non agirà direttamente sul sistema ma sarà il sistema ad eseguire ordini per conto dell’applicazione.

Consumo della batteria

La cosa importante è che il consumo di batteria e la reattività sono indipendenti dalla quantità di RAM occupata, ciò significa che vuota o piena il consumo che ne segue è identico. [Questo deve essere ben chiaro a tutti coloro che hanno uno smartphone/disposititvo Android. Se non lo sapevate, ora ne siete coscienti. Quindi fate attenzione, ora tutto deriverà da ciò.] Da questo si intuisce che la RAM deve essere piena per ottenere il massimo rendimento sia in termini di durata che di prestazioni ma vediamo perché.

… E ora vediamo nello specifico: Il Codice

Una volta avviata un’applicazione questa è in foreground. Un’applicazione si dice in foreground se la stiamo usando o se è utilizzata pienamente dal sistema ovvero occupa ram e sfrutta “l’hardware”(processore, traffico dati, GPS, accelerometro, NFC, bluetooth).

In codice essa si trova in uno stato di onCreate() onStart() onResume(), il ché vuol dire che l’applicazione compie delle azioni prima di avviarsi (connettersi, controllare aggiornamenti, caricare e ricevere dati), per questo quando viene avviata e mentre la si usa si ha il massimo consumo. Un’applicazione già avviata però non ripete gli stadi di onCreate() onStart() che richiedono un notevole consumo di energia, ciò significa che eseguendo un’applicazione già aperta abbiamo un minore consumo e una maggiore reattività perché vengono saltati degli stadi.Android-5.0-Key-Lime-Pie
Quando passiamo ad un’altra applicazione, la precedente va in background. Un’applicazione in background non viene più usata ma continua ad occupare RAM (è come se fosse salvata li, ma non viene usata, se non poca poca, energia per farla restare li). Di solito le applicazioni vanno in background una volta che premiamo indietro o home, la differenza è che con il primo se riapriamo l’applicazione questa ripartirà dalla schermata iniziale come se l’avviassimo per la prima volta, con il secondo invece torneremo nel punto in cui ci siamo interrotti. Con i giochi di solito usare indietro significa chiudere il gioco, anche se usando home probabilmente sarà chiuso ugualmente per la quantità di RAM occupata sicuramente maggiore delle altre applicazioni. Android infatti chiude applicazioni in background o se ha bisogno di RAM o se esse non vengono usate per un certo periodo di tempo, viene usato il comando onDestroy() [comando che viene usato,i più esperti lo sanno, quando sfruttiamo il kill button nelle custom rom]. Questo però non avviene allo stesso modo per tutte le applicazioni; per capire ciò bisogna introdurre il concetto dei servizi.

I Servizi

I servizi servono alle applicazioni per svolgere delle attività; essi funzionano anche se l’applicazione è in background e ci permettono di compiere più azioni contemporaneamente (multitasking). Uno stesso servizio può essere usato anche da più applicazioni in modo da ottimizzare i consumi e grazie ad essi quindi un’applicazione può usare altre applicazioni già nella RAM condividendo sia lo spazio in RAM che la dalvik cache. Se un’applicazione in background non sfrutta servizi essa non consuma energia e non influisce sulla velocità perché come detto prima non usa nessuna risorsa e occupa solo il suo spazio nella RAM. In codice essa si trova nella condizione di onPause() onStop() e in caso venga riutilizzata si usa onRestart().

Tornando alla chiusura delle applicazioni in background questo dipende anche dai servizi che le applicazioni usano: vengono chiuse prima le applicazioni senza servizi e poi quelle con servizi, anche se con le moderne RAM c’è abbastanza spazio per mantenere tutti i servizi; però se ad esempio, aprissimo un gioco molto pesante, che richiede quindi molta RAM, vengono chiuse anche le applicazioni con servizi.

I WakeLock

Funzionamento ciclo applicazione e Wakelock Altra cosa da definire sono i wakelock: essi sono dei comandi dati al sistema dalle applicazioni che mettendo in azione il processore fanno “svegliare” (wake) quando lo schermo è spento impedendogli di andare in deepsleep, ovvero come suggerisce il nome, in uno stato di “sonno profondo” in cui cade il device quando lo schermo è spento in cui il sistema lavora il minimo indispensabile per risparmiare batteria; i wakelock perciò svegliano il device dal “torpore” aumentando così i consumi del dispositivo. Da chiarire però che i wakelock non sono tutti dannosi anzi alcuni sono necessari, senza essi infatti non potremmo ricevere notifiche. Quando lo schermo è spento uno smartphone senza wakelock con lo schermo spento è “morto” ossia non sarà in grado di sfruttare alcun servizio. Perciò bisogna capire quali wakelock tengono maggiormente sveglio il nostro device è, nel caso ce ne fosse qualcuno non necessario e troppo persistente, allora bisognerebbe cercare di ridurlo o di spegnerlo.

Leggi anche: Guarda e abbatti i tuoi wakelock

 

Una Piccola Conclusione

Come avrete finalmente capito, Android gestisce da solo le applicazioni da tenere aperte e da chiudere in base alle necessità del sistema in modo da ottenere sia migliori performance che migliore durata. Usare task killer non fa altro che impedire al sistema di fare il suo lavoro costringendolo a farlo male in quanto non è stato programmato per lavorare in quel modo. Inoltre Android tiene un log (una sorta di registro) delle applicazioni avviate, dei servizi, di tutto ciò che il sistema fa e che noi gli facciamo fare e cercando di adattarsi a tutto questo, forzando la chiusura delle applicazioni, interrompe bruscamente il log e sia Android, che l’applicazione stessa, non capendo cosa sia successo e quale sia il passo successivo agiscono di conseguenza interpretando come un errore la brusca interruzione. Ciò ha due conseguenze:

1) Android non impara niente

2) l’applicazione tende a riaprirsi per ovviare all’errore

Il risultato in entrambi i casi è che avete solo peggiorato la situazione consumando, inoltre, più energia poiché devono essere ripercorsi gli stati di avvio che, come già spiegato, sono molto dispendiosi.

Segui ancheCome velocizzare lo smartphone e non farlo crashare con Greenify

Per Quanto Riguarda L’Ibernazione

Stessa cosa per l’ibernazione: i servizi servono alle applicazioni, anzi lo stesso servizio serve a più applicazioni quindi quando avviate un’applicazione, se questa ha bisogno di un servizio di un’altra applicazione che avete ibernato, l’applicazione o costringe il sistema ad avviare ugualmente l’applicazione (maggiore lavoro = maggiori consumi) o non riesce a funzionare come si deve e cerca delle alternative (maggiore lavoro = maggiori consumi), cosa che succede già all’avvio di Android.

Se un’applicazione non vi serve semplicemente disinstallatela (magari facendo prima un backup per sicurezza), eviterete così al sistema un bel pò di lavoro.

La Vera Conclusione

Dopo tutto questo discorso, come consumare meno batteria? Installate un’applicazione che permetta di vedere le statistiche approfondite dell’uso della batteria, dei servizi
e dei wakelock, per risolvere il problema si deve capire quale sia, vedete cosa causa il maggior consumo di batteria e  Gestione RAM Androidcercare di adottare delle contromisure senza agire sul sistema (noi ci siamo per questo), se ad esempio la sincronizzazione è troppo frequente basta aumentare il tempo tra una sincronizzazione e l’altra. Se i servizi di facebook, gmail, o qualsiasi altra applicazione che richieda l’accesso consumano troppo, basta effettuare il logout e l’applicazione non avrà bisogno di servizi se non quando effettuiamo il login, poiché quando lo effettuiamo diamo il comando al sistema di far partire i servizi dell’applicazione. Ovviamente bisogna riflettere prima di fare qualcosa: se controllate Facebook ogni 15 minuti o avete bisogno che vi arrivino le notifiche non serve effettuare il logout per poi rifare il login ogni volta, sarebbe ancora peggio. Insomma ciò che consuma batteria sono le fasi iniziali all’avvio dell’applicazione e i servizi di cui essa ha bisogno, per ovviare ai primi bisogna aprire l’applicazione e poi lasciarla in background e non fare aprì e chiudi, per i secondi invece il contrario, meglio aprire l’applicazione quando ne abbiamo bisogno e non lasciarla in background, però ricordo che chiudere applicazioni in background manualmente è dannoso, sia perchè i servizi di un’applicazione vengono usati anche da altre applicazioni e sia perchè un’applicazione in background senza servizi non consuma quindi basta disattivare i servizi e non chiudere l’applicazione. In conclusione, se un’applicazione la usate spesso lasciatela in background, se invece la usate raramente, ma davvero raramente, consiglio comunque di lasciarla in background perché i servizi se non li usate direttamente li usate indirettamente, però se proprio i servizi di quell’applicazione vi dimezzano la batteria allora bloccateli o rallentateli (beati quelli che usano il telefono solo per telefonare, già mio nonno ci gioca e si lamenta che gli dura poco xD).

Continua a leggere e ad approfondire la questione della ram seguendo questo link:

1) Risparmiare ram android con amplify bloccando i servizi

2) Come risparmiare batteria con xposed [Guida parte 2]

Salvatore Giordano, mio collega editore, la pensa come me. Leggi il suo articolo: No ai Ram Manager! Ram sprecata inutilmente!

In passato anche altri siti di spessore hanno trattato l’argomento: si veda per esempio l’idea di Claudio Pomes: Come gestire le app attive secondo Navigaweb

Se non vi è chiaro come liberare memoria RAM su Android e per qualsiasi chiarimento scrivete nei commenti o contattateci su Facebook.

 Potrebbe interessarti anche: Wakelock e android kitkat: come farli andar d’accordo

 

 

 

 

 

In collaborazione con Matteo Mascione.

Fabrizio Varelli

La mia passione per il mondo del modding nasce in tempi lontanissimi con l'aquisto di un vecchio ma caro samsung star avente ancora OS proprietario; ma poi, con l'avvento del mondo android, questa passione si è trasformata in una vera e propria "droga". Con l'esperienza accumulata non riesco a staccarmi dalla tecnologia rendendo essa l'unica (ma non sola) ragion di vita portandomi ad iscrivere alla facoltà d'ingegneria elettronica cercando di inseguire il sogno della mia vita: Google.

Articoli correlati

11 Commenti

  1. Pingback: Come velocizzare lo smartphone e non farlo crashare con Greenify
  2. Ottimo articolo: ho capito molte cose.
    A tal proposito vorrei sapere se è utile utilizzare la funzionalità, che in genere foriscono gli smartphone, di chiudere tutte le applicazioni attive.
    Grazie

    1. Caro Fabio,

      come avrai capito dall’articolo, la chiusura di applicazioni comporta comunque una loro riapertura dopo un tot di tempo con un dispendio ancora maggiore di risorse.

      Nel prossimo futuro, come suggerito dall’aggiornamento di Huawei a Nougat, gli smartphone dovrebbero memorizzare le nostre abitudini così da gestire ancora meglio ram e batteria aprendo solo le app che realmente utilizziamo spesso.

      Il mio consiglio, pertanto, è di non usare task killer o chiusure forzate.

      A presto,

      Giovan Giuseppe Ferrandino
      founder Tuttoapp-android.com

  3. Pingback: App agenda per Android gratis in italiano: Callizer
  4. Pingback: Durata batteria dello Smartphone: come aumentarla
  5. Avere un’app in background influisce sulla velocità del sistema, poiché se Android ha bisogno di Ram deve prima liberare quellla occupata.

    1. dobbiamo distinuguere tra due tipi di app una che fornisce i servizi ed una invece che li usa. se l app di cui si parla è la prima il sistema sarà influenzato (sopratutto alla chiusura di essa); se è la seconda invece il sistema non ne risente perchè quando viene chiusa non utilizzerà più tutto quello spazio.
      La ram android va per priorità quando un app deve essere eliminata dal background non ne viene aliminata una a caso ma quella più inutile possibile cioè quella che non influise più di tanto.
      e poi spiego apertamente che un app in background occupa ram ma non sfruttando servizi come in foreground non influisce massivamente nella fluidità android. se segui i passaggi del codice potrai ben capire che un conto è eliminare un app in background, un conto è tenerla li e riaprirla.
      Per questo un app in background sprecherebbe di più se chiusa terminando ogni processo mentre android che si autoregola non ci mette più di tanto ad eliminare un app chiudendola definitivamente quando serve.
      non so se è chiaro 🙂 perdonami per il ritardo ma sono sotto esami 😛
      rispondimi pure e a presto 🙂

  6. Pingback: Buzz Launcher Beta: condividi la tua Home con il mondo
  7. Pingback: Risparmiare ram android con amplify bloccando i servizi
  8. Pingback: Come liberare memoria ram su Android [Guida parte 2]
  9. Pingback: No ai Ram Manager! Ram sprecata inutilmente!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Pulsante per tornare all'inizio