Ram Android & Task Killer eterna guerra!

Discussione in 'Guide generiche' iniziata da frrndr75, 31 Ago 2012.

Condividi questa Pagina

Status Discussione:
Chiusa ad ulteriori risposte.
  1. frrndr75

    frrndr75 Silver Droid

    Iscritto:
    23 Apr 2012
    Messaggi:
    2.729
    "Mi Piace":
    621
    Senza dubbi almeno una volta abbiamo usato un task killer sul nostro smartphone o tablet, nel Play Store se ne trovano davvero tanti, alcuni sviluppatori sono contrari all' uso intensivo di questi, mentre altri li mettono nelle loro Custom Rom. Cosa sono i task killer per la memoria ram? Perché molti (io compreso) preferiscono non usarli/limitare il loro uso?

    Al principio sembra una bella idea avere una app che ammazza i processi per avere più ram libera sul dispositivo, sembra bello tanta ram libera e pensare che il sistema vada più veloce, ma questo avviene in ambiente Windows, in Android invece le cose cambiano, la gestione della Ram è completamente diversa.

    In Android la Ram sarà quasi sempre piena fino ad un piccolo margine di lavoro, ogni volta che andiamo ad usare delle applicazioni il sistema le carica nella ram, fino ad un punto che le elimina per dare spazio alle nuove; questo in realtà è molto comodo perché se chiudiamo una app e viene ammazzata subito al riaprirla si consuma piu ram e batteria, mentre facendo gestire le risorse al sistema sarà lui a decidere cosa eliminare e cosa tenere in base anche a che percentuale di ram nuova richiede la app.
    Vedete il grafico:

    [​IMG]

    Ecco però cosa succede alle applicazioni programmate che lavorano in secondo piano tipo:
    • Posta
    • Sincronizzazioni
    • Gmail
    • DropBox
    • ect...
    queste non possono essere eliminate dal sistema, anche se usiamo un task kill quando vengono chiuse si riaprono subito dopo, il sistema elimina solo le app che non hanno attività.
    L'unica soluzione per non far partire le app che lavorano in secondo piano è bloccarle all'avvio del sistema (tipo autostarts, simile alla funzione di windows msconfig) e farle partire noi se ci servono; in poche parole se decidiamo di bloccare le app all'avvio non avremo la sincro posta ect... ognuno valuti quello che conviene fare.
    Quindi secondo me il problema è che spesso ci troviamo con moltissime app che lavorano in secondo piano, e sono queste app che ci rallentano il sistema perché Android non riesce a chiudere.
    L'applicazione autostarts (a pagamento) ci permette almeno di limitare queste app, con possibilità di scelta su quali lasciare.
    Delle varie app e configurazioni ne parleremo più avanti.

    Cosa bisogna sapere di Android:

    Android è un sistema operativo multitasking, i progettisti Google lo hanno fatto cosi come sistema dove non ci fosse il bisogno di dover chiudere le applicazioni, e che fosse il sistema a decidere quando e perché chiuderle.
    Il sistema e pensato in modo da poter passare da una applicazione o servizio all'altra, inviare sms, e-mail, Facebook, notizie, meteo. Propio per questo Android preferisce tenere addormentate queste app per ripescarle dalla ram nel caso servono ancora, sara molto più veloce al riaprirle dalla memoria ram che dalla sd. Anche perché al riprenderle dalla ram consuma meno batteria e cicli CPU.
    Possiamo dire che Android al suo interno usa già un task kill. (non so dove pero sicuro esiste)

    Gli svantaggi dei Task Killer

    Come abbiamo visto la gestione di Ram in Android funziona bene senza che tocchiamo nulla.
    Quando mettiamo in mezzo l'uso di un task kill, anche se le sue azioni sono in buona fede, quando decidiamo di ammazzare una app ci stiamo intromettendo nel ritmo di lavoro di Android; per esempio quando decidiamo di killare tutte le app avremo liberato la ram con la conseguenza che Android le riapre e il consumo di batteria aumenta, per ritornare al ritmo di lavoro che è stato progettato. Vista la durata della batteria dei nostri smatphone questo sarebbe controproducente.
    Alla fine il sistema Android impara da noi quali processi o applicazioni servono e quali deve chiudere prima e lasciare piu a lungo nella ram.

    I vantaggi dei Task Killer

    Come potrebbero essere utili dopo quello che abbiamo detto!?
    In pratica (opinione personale) si potrebbero usare queste app solo in casi specifici del tipo:
    • Una app si blocca e il sistema Android non ci propone la chiusura forzata.
    • Il sistema va lento.
    Insomma in conclusione qualche volta sono utili i task kill, ma da usare solo in casi particolari, non di certo programmare che ogni 3 ore ammazzi tutto per liberare memoria.
    Se si noto che una app consuma troppa memoria e batteria forse la cosa migliore e segnalare allo sviluppatore.
    Spero sia utile, se qualcuno vuole aggiungere più info fate pure c'è sempre da imparare! Ciao.

    Altro materiale utile fonte Wikipedia:

    [h=4]Attività (activity) [modifica][/h]Le attività sono quelle applicazioni destinate a una interazione diretta con l'utente. Un esempio sono i videogiochi, le applicazioni per l'ufficio e i visualizzatori (reader) di E-book. Le attività vengono generalmente distribuite sotto forma di file .APK , vengono poi installate in delle cartelle nella memoria del dispositivo (o in una card estraibile), infine viene creata una icona per l'utente, che gli permetterà di eseguirla in qualsiasi momento[SUP][42][/SUP]. E' anche possibile disinstallare le attività mediante una utility integrata con Android. Le attività vengono create come oggetti di classe Activity da cui ereditano proprietà e metodi[SUP][42][/SUP].

    [h=4]Servizio (service) [modifica][/h]I servizi sono, al contrario, quelle applicazioni che per loro natura svolgono delle operazioni autonome e che vengono richiamati dalle attività al bisogno. Il sistema operativo fornisce alle applicazioni vari servizi già pronti all'uso, per ottenere l'accesso all'hardware o a risorse esterne (ad esempio dei web services di messaggistica). I servizi sono oggetti di classe Services[SUP][42][/SUP]. Un esempio di servizio è com.android.inputmethod.latin , ossia il componente che fa comparire la tastiera quando si seleziona (con i tasti o con un "tocco" sul touch-screen) un campo di input testuale. I servizi possono essere eseguiti o interrotti direttamente dall'utente, sebbene siano eventualità alquanto rare.
     
    Ultima modifica: 5 Set 2012
    A mariodroid, franyo, EmaMt27i e ad altre 4 persone piace questo elemento.
  2. frrndr75

    frrndr75 Silver Droid

    Iscritto:
    23 Apr 2012
    Messaggi:
    2.729
    "Mi Piace":
    621
    *traduzione google* sono dei tutorial che avevo trovato in rete non ricordo i link li avevo solo copiati e tradotti ma sono interessanti:

    Primo:

    Questo è ora funziona Android. Il mio modo di vedere questo, questo è molto simile al concetto di "pre-fetch" in Windows 7.


    Ho un computer portatile I 6 RAM. Base OS consuma meno di 1,5 GB di RAM. Ma come un'ora o giù di lì, quando vedo il mio utilizzo della RAM, la sua per la somma di GB 3-4. Quello che ho notato è che le mie applicazioni più frequentemente / utilizzati di recente vengono caricati nella RAM e tenuti al minimo. Una certa quantità di RAM è sempre mantenuto libero invece di usare tutta RAM. In questo modo le applicazioni avvio più veloce. Quando si carica un programma diverso di memoria pesante, spinge quella esistente fuori e carica questo.


    Più o meno la stessa in Android troppo. Quando u andare a qualsiasi applicazione task manager n vedere le applicazioni in esecuzione, si noti u'll che molte delle applicazioni caricate sono quelle u utilizzati di frequente.


    Queste applicazioni NON utilizzare qualsiasi CPU. Sono appena caricato in memoria e tenuti lì per un rapido accesso.


    Quando accendo il telefono ho come 190 + MB di RAM libera. Anche se lasciato in modalità standy, nel giro di un'ora, vedo la mia caduta libera RAM a 80-120 gamma MB. Non ho mai visto andare meno di 80 MB. E le applicazioni nella memoria sono quelli che ho usato l'ultima volta, e quelle che uso per tutto il tempo.


    Anche se u utilizzare un task killer per uccidere questi "inattivi" apps a intervalli, si sarebbero caricato di nuovo prima o poi. Questo è il principio di Android. Quindi utilizzando killer compito, se u sentire ur liberando memoria, infatti, solo drenante batteria ur ur. Qual è l'uso della memoria, se non lo si utilizza in modo efficace ur.


    Non ti preoccupare ca quantità di RAM libera. Lasciate androide gestirlo. I sistemi sono abbastanza intelligenti in questi giorni.


    Spero che questo aiuti. Di seguito è riportato più circa lo stesso in dettaglio.




    Android Gestione della memoria


    Android è un sistema operativo basato su Linux con kernel 2.6.x, ridotta per gestire la maggior parte dei compiti abbastanza bene. Utilizza native aperte librerie C di origine che sono alimentati macchine Linux da anni. Tutte le operazioni di base del sistema operativo, come I / O, la gestione della memoria, e così via, sono gestiti dai nativi stripped-down kernel Linux.
    Come utilizzare la memoria per ogni applicazione


    Processo di Android e la gestione della memoria è un po 'insolita. Come Java e. NET, Android utilizza il suo tempo di esecuzione e la macchina virtuale per gestire la memoria applicazione. A differenza di una di queste strutture, il tempo di esecuzione di Android gestisce anche le vite di processo. Android garantisce la risposta delle applicazioni arrestando e uccidendo i processi, se necessario, a liberare risorse per una maggiore priorità applicazioni.


    Ogni applicazione Android gira in un processo separato all'interno la propria istanza Dalvik, abbandonando ogni responsabilità per la memoria e la gestione dei processi per il tempo di esecuzione di Android, che si ferma e uccide processi, necessari per gestire le risorse.


    Dalvik e il tempo di esecuzione Android sedersi sulla cima di un kernel Linux che gestisce a basso livello di interazione tra i driver hardware e gestione della memoria, mentre un set di API fornisce l'accesso a tutti i sotto-servizi che si trovano, le caratteristiche e hardware.


    Dalvik Virtual Machine Dalvik è un registro basato su macchina virtuale che è stato ottimizzato per garantire che un dispositivo può eseguire più istanze in modo efficiente. Essa si basa sul kernel Linux per la gestione della memoria threading e di basso livello.


    Il virtuale Dalvik macchina


    Uno degli elementi chiave di Android è la macchina virtuale Dalvik. Invece di utilizzare un tradizionale Java virtual machine (VM), come Java ME (Java Mobile Edition), Android utilizza la propria VM personalizzato progettato per garantire che i casi più funzionare in modo efficiente su un singolo dispositivo.


    La VM Dalvik utilizza il kernel Linux sottostante del dispositivo di gestire funzionalità di basso livello tra cui la sicurezza, filettatura, e di processo e la gestione della memoria.


    Tutto l'hardware Android e servizio di accesso al sistema è gestito attraverso Dalvik come un livello intermedio. Utilizzando una macchina virtuale per ospitare l'esecuzione dell'applicazione, gli sviluppatori hanno un livello di astrazione che garantisce non hanno mai preoccuparsi di una implementazione hardware particolare.


    La VM Dalvik esegue i file eseguibili Dalvik, un formato ottimizzato per garantire la memoria minima impronta. I file eseguibili. Dex sono create dalla trasformazione corsi di lingua Java compilate utilizzando gli strumenti forniti nel SDK.


    Comprensione delle applicazioni e dei processi prioritari Stati


    L'ordine in cui vengono uccisi processi per recuperare risorse è determinata dalla priorità delle domande ospitati. La priorità di un'applicazione è uguale alla sua priorità più elevata componente.


    Quando due applicazioni hanno la stessa priorità, il processo che è stato con una priorità inferiore più lunga sarà ucciso per primo. Priorità del processo è influenzata anche dalle dipendenze tra processi, se un'applicazione ha una dipendenza da un servizio o fornitore di contenuto fornito da una seconda applicazione, l'applicazione secondaria avrà almeno pari a una priorità in quanto l'applicazione lo supporta.


    Tutte le applicazioni Android rimarrà in esecuzione e in memoria fino a quando il sistema ha bisogno delle sue risorse per altre applicazioni.


    E 'importante strutturare l'applicazione correttamente per garantire che la sua priorità è appropriato per il lavoro che sta facendo. In caso contrario, l'applicazione potrebbe essere ucciso mentre è nel bel mezzo di qualcosa di importante.


    Il seguente elenco indica ciascuno degli stati di applicazione mostrati in figura (vedi immagine allegata) che spiegano come lo stato è determinato dai componenti dell'applicazione che lo compongono:


    Attivi i processi attivi (primo piano) i processi sono quelle applicazioni che ospitano con componenti attualmente l'interazione con l'utente. Questi sono i processi di Android sta cercando di mantenere reattiva recuperando risorse. Ci sono in genere molto pochi di questi processi, e saranno uccisi solo come ultima risorsa.


    Processi attivi includono:


    * Attività in uno stato "attivo", cioè, sono in primo piano e rispondere agli eventi generati dall'utente. Potrete esplorare stati di attività in maggiore dettaglio più avanti in questo capitolo.
    * Attività, Servizi, o riceventi per la radiodiffusione che sono attualmente in esecuzione un gestore OnReceive evento.
    * I servizi che sono in esecuzione un onStart, onCreate o gestore di eventi OnDestroy.


    Processi visibile visibile, ma i processi inattivi sono quelli che ospitano "visibili" Attività. Come suggerisce il nome, Attività visibili sono visibili, ma non sono in primo piano o di rispondere agli eventi generati dall'utente. Ciò si verifica quando un'attività è solo parzialmente oscurata (da un non-a schermo intero o trasparente di attività). Ci sono generalmente visibili processi pochissimi, e sarà solo ucciso in circostanze estreme per consentire processi attivi per continuare.


    Processi di servizio avviato processi di servizi di hosting che sono stati avviati. Servizi di supportare l'elaborazione in corso che dovrebbe continuare senza interfaccia visibile. Poiché Servizi non interagiscono direttamente con l'utente, ricevono una priorità leggermente inferiore Attività visibili. Sono ancora considerate operazioni di primo piano e di non essere ucciso a meno che le risorse sono necessarie per i processi attivi o visibile.


    Processi in background Processi di hosting Attività che non sono visibili e che non hanno tutti i servizi che sono stati avviati sono considerati processi in background. Ci sarà generalmente un gran numero di processi in background che Android ucciderà con un last-visto-prima-ucciso pattern per ottenere le risorse per i processi di primo piano.


    Processi vuoti Per migliorare le prestazioni complessive del sistema, Android mantiene spesso applicazioni in memoria dopo aver raggiunto la fine della loro vita. Android mantiene questa cache per migliorare il tempo di avvio delle applicazioni quando sono rilanciato. Questi processi sono rou-tinely ucciso come richiesto.


    Come utilizzare la memoria in modo efficiente


    Android gestisce le applicazioni aperte che sono in esecuzione in background, quindi ufficialmente non dovrebbe preoccuparsi di questo. Ciò significa che chiude le applicazioni quando il sistema richiede più memoria. Tuttavia, la maggior parte degli utenti Android non sono molto soddisfatto di come fa le sue cose, perché a volte lascia troppi processi in esecuzione che provoca lentezza 'in termini di prestazioni di tutti i giorni. Possiamo usare avanzato Task Killer / task manager e fa il suo lavoro molto bene.

    Secondo:

    Che cosa è Android esattamente?




    Android è un sistema operativo multitasking, ed è stato progettato fin dall'inizio come un sistema in cui vi era la necessità di dover chiudere le applicazioni. Sì, gli ingegneri di Google hanno deliberatamente fatto in modo che le applicazioni non aveva bisogno di essere chiuso, e che era il sistema stesso a decidere quando e perché chiuderle.


    Se si guarda a tutte le applicazioni sviluppate per Android da parte di Google, nessuno di loro ha un tasto "exit" per uscire, questo è perché Android è un sistema progettato pensando alle molte attività che un utente normale gioca con lo smartphone ogni giorno e sulla base di Ciò è stato fatto in modo che il sistema possa gestire in modo efficiente il passaggio da un'applicazione all'altra, da un servizio ad un altro, senza gravare l'utente a decidere quando, come e perché chiudere un'applicazione, Immaginate che cosa si farebbe normalmente, chiamare un amico, inviare un messaggio di testo, rispondere a un messaggio e-mail, date un'occhiata a Facebook, notizie, o dare un occhio al meteo. Ci districhiamo tra miriadi di applicazioni, e il sistema si assicura, per quanto possibile, di mantenere in memoria tutte le applicazioni che utilizzano ripetutamente, sia perché sarà molto più veloce ripescarle da RAM, anziché dalla memoria esterna, o perché ripescarle dal RAM e non riaprirli da zero, si consuma meno energia della batteria e cicli di clock del processore.


    Ciò significa che Android, all'interno, ha il suo task killer (sì) e che ha proprio il compito di gestire i processi e le applicazioni migliori, a capire quando è il momento di chiudere quelle meno utili. Ma ... si pone la questione, vi è una differenza tra il processo e l'applicazione?


    La risposta è ovviamente sì, e ora vediamo quello che sono e quello che fanno.


    Qual è il processo?


    Un processo è un'attività che può essere svolta da una o più applicazioni. Quando si pensa di una applicazione che si pensa a qualcosa, come ad esempio ascoltare musica, inviare un messaggio di Facebook o sincronizzare il tuo feed rss,
    questi processi sono piuttosto
    Perché sono le azioni che fa scattare l'applicazione per eseguire il suo compito. Tuttavia, è importante notare che solo perché c'è un processo in memoria, senza alcuna funzione nota, non significa che questo processo è ridondante o non fare nulla. Infatti, i processi possono essere in uno stato di inattività o attivo.


    Che cosa è un programma?


    Un'applicazione è qualcosa che fa uso di numerosi processi per fornire alcune funzionalità. Ad esempio, le applicazioni per i navigatori di Facebook e Twitter, o GPS, o anche giochi ecc. ecc ..
    Un'applicazione può essere attivo o inattivo, a seconda se ha tutti i processi attivi o non attualmente associati con esso.


    Quando la spedizione è un'applicazione, il sistema gli permette di mantenere il suo lavoro in esecuzione in background (multitasking vero), che permette di continuare a fare il suo lavoro.


    Ad esempio, continuare a scaricare messaggi di posta elettronica o ascoltare musica, o scaricare una pagina web. Tuttavia, proprio perché le applicazioni lasciano processi "in esecuzione" in background, non vuol dire che questi non sono realmente facendo niente e non sono necessari. Sono tenute in memoria se si prevede di riutilizzare di nuovo al più presto. Molte persone pensano che questo genera un consumo eccessivo della batteria, ma questo non è vero.
    L'impronta di una domanda "inattiva" in un dato momento in memoria utilizza esattamente la stessa quantità di batteria come sarebbe se quella porzione di memoria sarebbe libero.




    Che cosa succede se la memoria è troppo bassa?


    Abbiamo detto che Android ha il suo assassino proprio compito interno ed è abbastanza intelligente da riconoscere quando si è a corto di memoria disponibile, nel caso inizierà a chiudere tutte le applicazioni che sono a bassa priorità per lui.


    Il modo in cui determina la priorità vedremo tra poco, ma in poche parole significa che le applicazioni che utilizzano meno o che non sono fondamentali per il telefono verrà chiusa per prima. L'ultima ad essere chiusa, ma sarà applicazioni attualmente in primo piano, e sono quindi applicazioni critiche, come l'allarme.


    Quando Android chiude le applicazioni per liberare memoria, come ho detto prima, lo fa in modo molto intelligente, perché la prossima volta che si riapre una domanda chiusa, fa sì che da ristrutturare, come se non fosse mai stato chiuso (questo è quello che IOS attualmente chiamato multitasking, ma in realtà è solo un freezare l'applicazione).


    Quindi questo significa che l'applicazione di "compiti" uccisione che stanno nascendo sul mercato, ma solo interferire sostanzialmente per questa amministrazione, crea anche potenziali problemi di instabilità e di scarse prestazioni del terminale.


    Quindi cerchiamo di vedere, prima di proseguire per sfatare gli stereotipi che influenzano Task Killer


    1) La Task Killer fare il mio terminale più veloce -
    FALSE
    -


    Al contrario, task killer rende il sistema potenzialmente instabile e scatti. Processi di uccidere indiscriminatamente è dannoso, perché forse si può uccidere processi condivisi tra più applicazioni, e questo significa che il sistema è costretto a riaprire le applicazioni costantemente, di riaprire il processo di condivisione, e tentare di ripristinare l'uccidere forse solo brutale, mentre l'attività stava facendo un'attività. E questo può generare crash o lag che pensiamo sarà il risultato delle applicazioni stesse, e invece abbiamo creato tutto questo ...


    2) La Task Killer allungare la durata della batteria -
    FALSE
    -


    La Task Killer quando fanno esattamente l'opposto ... ridurre la durata della batteria!


    Quando un'applicazione viene liberato killa quella finestra di memoria occupata, ma quasi certamente subito dopo la riapertura, o quando la riapertura, accadrà che invece di prelevarla nuovamente fuori dalla RAM, riaprirà da zero e questo genera più lavoro al sistema e al terminale che utilizza più energia. Da quando ho disinstallato Killer automatico Task, devo ammettere che la durata della batteria, perché prima di ATK è sempre stato molto gentile con loro per uccidere tutto in memoria e Android riaperto poco dopo l'80% di ciò che poco prima era stata chiusa ... Questo è solo il ritmo e Ribatti antibatteria per eccellenza ...


    3) Utilizzo di un Task Killer, perché non ho il pulsante di uscita nel ricorso -
    FALSE
    -


    Non vi è alcun pulsante di uscita, perché Android è progettato per impedire all'utente la necessità di chiudere le applicazioni. Se un'applicazione deve essere chiuso, l'Android sarà quando sarà il momento.


    4) Ma poi il Task Killer non ha bisogno di possedere qualcosa? -
    FALSE
    -


    Le applicazioni sviluppate per Android non ha alcun modello di programmazione, scarsamente sviluppate alcune applicazioni può generare instabilità del sistema e impedire il corretto funzionamento del terminale. In questo caso può essere utile per uccidere una di queste applicazioni che genera problemi per recuperare la situazione e disinstallare. In questo caso, utilizzare il manuale Task Killer, che consentono di decidere quando e perché uccidere tale un'applicazione o un processo.
     
    A mariodroid e yann73 piace questo messaggio.
Status Discussione:
Chiusa ad ulteriori risposte.