Secondo me il vero problema sta tutto qui.
Non chiudere le applicazioni potrebbe essere una scelta.
Ma il fatto che esista qualche applicazione o processo di sistema che "mangia" la ram, non mi sembra di un funzionamento del tutto corretto.
[GUIDE] The ultimate Guide to Speed Up your Hero "safely"!! (any ROM) - xda-developers
How to configure Android's *internal* taskkiller - xda-developers
le vere app che vi mangiano ram sono questi inutili task killer ecc ecc
come ho detto in precedenza passate piu tempo a killare app che non fa
a utilizzare il cell!
imho
Quoto,
chi non conosce come funziona linux, crede che il terminale vada meglio solo perchè vede un valore di memoria libera più altro.
Basterebbe informarsi un po per capire che non è così.
La memoria l'ho pagata? E allora perchè dovrei averla li libera senza fare niente??
Ciao
Il fatto è che molti sono abituati a pensare "come windows", dove un'applicazione sta in RAM solo se è effettivamente in uso (e quindi impiega il processore), e pochi hanno presente il concetto di RAM Cache.
Tornando ad Android, però, i task-killer non sono così inutili, perché in altri thread era stato evidenziato che ci sono alcune applicazioni, probabilmente scritte non molto bene, che anche quando sono in lock (quindi disattive, e solo in RAM Cache) continuano a richiedere il processore, di fatto impiegandolo e quindi rallentando il terminale. Al punto proprio che a meno di uccidere quelle app, occorre ogni tanto riavviare il terminale da tanto che risulta rallentato per colpa delle tante app rimaste aperte e non "disposed".
è vero.. ma allora la cosa piu intelligente sarebbe chiudere SOLO queste app poisoned
il problema sta nel riconoscere quali sono poisoned e quali no!
per conto mio la soluzione migliore imho è questa:
un Low Auto task killer come MinFreeManager (lavora a basso livello e non è invasivo)
e per le situazioni in cui una app si blocca e mangia ram (a discapito del resto del sistema) un bel taskiller integrato in astro file manager
cosi non dovete mettere su app doppioni!!
ma comunque anche solo con minfreemanager settato su mild il sistema diventa reattivo a vista d'occhio.. e senza clicckare su nessun widget
Si ma allora in background ci sarà anche questo programma, invece facendo un kill all con le dovute esclusioni si risolve tutto, sopratutto se il task killer killa se stesso...
Il problema peggiore restano appunto le app che non hanno il comando exit o cmq che restano in background senza senso, ad esempio un gioco che resta in background a cosa mi serve? non deve monitorare niente e non lo voglio in background
e poi è falsa sta storia della memoria ( l'ho pagata la uso ) è un problema se restano troppe cose in backG, il telefono rallenta eccome, poche storie, e tenere programmi pronti all'esecuzione porta ad un utilizzo di risorse tra cui batteria, cpu o memoria che non voglio vadano spese x certe app
Questo è come la penso io
E pensi sbagliato, purtroppo.
Tu sbagli a considerare programma in RAM = programma in esecuzione.
Se un'applicazione è mantenuta in RAM non è necessariamente in background. Un'applicazione in background è solo un'applicazione con un livello di priorità basso, che vuol dire che prende il controllo del processore solo per brevi periodi e solo se non ci sono altre applicazioni (di priorità più alta) che hanno richiesto il processore. Ma un'applicazione può anche stare in RAM senza essere neppure in background: sta lì "salvata" come potrebbe stare salvata in una scheda SD, in un hard disk, o in una chiave USB. La RAM è pur sempre una MEMORIA, e il primo scopo di ogni memoria è tenere salvati dei dati.
La RAM di tipo DDR (la più comune) consuma poca corrente elettrica finché "mantiene in memoria" un programma o dei dati: la RAM è composta da tante celle di memoria binarie a loro volta costituite da un condensatore e un transistor. Questo tipo di costruzione fa sì che sia necessaria una corrente molto minima per mantenere lo stato (0 o 1), ma questa minima corrente viene consumata A PRESCINDERE dal contenuto, quindi che ci siano o non ci siano cose salvate, la RAM consuma lo stesso quantitativo di corrente; ne consuma un po' di più nel momento del CAMBIO DI STATO, cioè nel momento in cui trasformi un 1 in 0 o viceversa. Questo avviene quando "carichi" in RAM dei dati o delle applicazioni, quando modifichi detti dati, quando esegui istruzioni che modificano lo stato della macchina, insomma tutte le volte che il PROCESSORE deve svolgere delle operazioni per le quali gli occorre ricordare il fatto che è cambiato qualcosa. Ed è il processore, in realtà, che consuma il grosso della corrente (ignorando per ora lo schermo, gli altoparlanti, e gli elementi di input/output vari), perché il processore consuma corrente in proporzione al "numero di transistor" del suo circuito che occupa per fare operazioni, e in proporzione al numero di volte che li usa (ovvero al tempo in cui li usa).
Infine, il fatto che un'applicazione sia in RAM non implica che questa stia utilizzando il processore: molti sistemi operativi moderni (non solo Linux e non solo Android) mantengono la cosiddetta RAM Cache, ovvero lasciano che un'applicazione stia in RAM ma senza che questa possa chiamare il processore o altre risorse hardware. Questo significa che quel "pezzo" di RAM fa da memoria pura. Se una nuova applicazione ha bisogno di essere caricata e non c'è spazio, il processore "pulisce" un po' di RAM Cache scegliendo di cancellare l'applicazione "spenta" più vecchia, e lo spazio libero viene allocato alla nuova applicazione. Cancellare dati in RAM è un'operazione rapidissima, richiede il tempo di pochi cicli di processore (per pochi intendo meno di 10), mentre caricare l'applicazione in RAM è veloce quanto può esserlo la lettura dall'hard disk/memoria flash/memoria di massa (le memorie di massa sono l'elemento più lento, quindi la velocità massima di caricamento è pari al massimo della velocità dell'elemento più lento).
Il vantaggio di questa strategia è, appunto, che se l'utente chiede di ri-aprire un processo chiuso che è ancora salvato nella RAM, il computer non deve caricare dall'Hard Disk gli stessi dati (come ho detto prima, la memoria di massa è l'elemento più lento durante il caricamento, quindi si salta quella parte e l'avvio dell'applicazione risulta estremamente veloce), ma deve solo dire "quella applicazione ora è attiva e può chiedere di occupare il processore".
Questo è il significato di "RAM vuota è RAM sprecata", nel senso che avere la RAM piena non implica necessariamente che il computer si rallenti. Il computer rallenta se la RAM è piena E il processore ha bisogno di allocarne dell'altra ma non può farlo perché quella occupata è occupata da applicazioni attive.
Nel caso in cui il processore debba allocare RAM per un'applicazione, ma la RAM è piena, ma ci sono applicazioni non attive, il processore si limita ad invocare memWipe di quello spazio, e allocarlo. Non si blocca.
Per cui, non è la quantità di RAM occupata a rallentare il processore, ma la quantità di processi ATTIVI, cioè di quei processi che "fanno fare roba" al processore.
PS: tieni presente che in un sistema multitask il processore continua a "saltare" da un processo attivo all'altro, dedicando frazioni di tempo a fare frazioni di operazioni richieste dai vari processi. Significa che, ad esempio, prima di finire l'istruzione richiesta dal processo A, si interrompe a tre quarti, poi inizia l'istruzione richiesta dal processo B, poi si ferma a metà di questa, torna su A, la completa, torna su B, si ferma dopo un ulteriore quarto di istruzione, comincia quella richiesta da C, si ferma ad un terzo, torna su B, la completa, torna su C, eccetera. Saltando velocemente da una all'altra, e dedicando a ciascuna frazioni di tempo proporzionali alla loro priorità, dà l'impressione di svolgere molteplici istruzioni contemporaneamente.
Per semplificare il discorso, che già come vedi è abbastanza lungo, non ho considerato partizioni e files di Swap, memoria virtuale su disco fisso e i sistemi di round-robin, se no scrivevo un libro.
Ultima modifica di LoZeno; 17-02-10 alle 07:42
Mi sa che è tempo sprecato!
Windows purtroppo è duro a morire e abitua la gente a pensare in un certo modo, anche se è quello sbagliato.
Se chiudo un programma, anche se fosse un gioco, (ovviamente non parlo di quelli programmati male e che, invece di chiudersi, rimangono in esecuzione), che differenza fa se mi libera memoria oppure no?
Se mi liberasse la memoria, ma da li al prossimo utilizzo dello stesso programma, tale memoria non dovesse servire al sistema, avrei liberato memoria inutilmente; non solo, ma al successivo utilizzo dello stesso programma, dovrebbe essere ricaricato in memoria.
Diversamente, se il programma (anche un gioco) una volta chiuso rimane comunque in memoria, nel momento in cui quella memoria servisse per altre applicazioni, è il sistema che deve preoccuparsi di liberarla e, attenzione, che non è un'operazione in più, in quanto, tale operazione, la avrebbe effettuata comunque il task manager solo per farmi felice e farmi vedere un valore di memoria libera più alto. E, come dicevo, se poi dovessi riutilizzare lo stesso programma che il task manager ha chiuso, da poco oppure da tanto tempo, non solo avrei sprecato il tempo che il task manager ha impiegato a liberare memoria, ma dovreii impiegare altro tempo per caricare nuovamente in memoria dei dati che il task manager ha cancellato senza che ci sia stato un bisogno effettivo di memoria libera.
Per assurdo ci sono persone che se vedono un un certo quantitativo di memoria libero, allora è tutto ok, se questo quantitativo è basso, allora allarme rosso.
Meglio rimanere con le proprie idee piuttosto che informarsi.
Io dovrei utilizzare un ulteriore programma, che magari rimane in background e quindi si che spreca memoria, solo perchè sono più contento quando vado a verificare il quantitativo di memoria libera?
Se poi vado a richiamare un programma che avevo utilizzato poco prima, (e potrei richiamarlo dalla memoria, e bada bene, non perchè stia girando in background) ma nel mentre il task manager ha pulito la memoria, non solo ho sprecato tempo processore per ricaricarlo in memoria, ma anche il tempo processore che il task manager ha utilizzato in precedenza per pulire la memoria appunto.
In definitiva, un conto è preoccuparsi delle applicazioni che girano in background quando non dovrebbero; tutt'altra cosa è stare li a guardare le applicazioni che sono semplicemente cachate in memoria.
Forse più che alla memoria libera, bisognerebbe fare attenzione alla memoria cachata.
Ciao
Ultima modifica di sagi; 17-02-10 alle 09:19