[ad#ad-giorgio]
La risposta, postata da un utente (ingegnere o comunque competente nel campo dell’informatica mobile) su Quora, un sito in stile Yahoo Answer dove si discute di qualsiasi cosa, è molto semplice: Android è basato, ed utilizza, Java.
In Java è incluso un processo, denominato garbage collection, che fa si che, quando viene chiusa un’app, la memoria venga “riciclata“. Il problema è che tale processo richiede dal quadruplo all’ottuplo della memoria che si vuole liberare per essere svolto celermente; se tale quantità non è disponibile le cose rallentano.
Il paradosso è che per liberare più celermente la RAM serve più RAM! In iOS le cose non funzionano così, e basta un GB di memoria ad accesso casuale per raggiungere e addirittura superare le prestazioni di Android.
[…] (…)Continua a leggere Perché un iPhone ha bisogno di un GB di RAM a fronte dei 3GB dei top di gamma An… […]
Per me sempre sullo scaffale rimarrà :D
Nero!
Hahahaaha
Mi meraviglio di queste notizie stupide e insensate… Il mio s2 girava 8 volte meglio di un iPhone 5 e aveva un gb di ram… Ma che notizia è??? Bastano anche 750 mb in un cell ma ovvio che più ne hai meglio è! Puoi tenere aperte più app e lasciare in background 20 processi…
Allora, prima di tutto ti chiedo di lasciare i pareri personali, perché senza dati alla mano il tuo “gira 8 volte meglio” non significa nulla. Secondo, non si parla di multitasking, ma di gestione della RAM per l’intero sistema operativo, non delle singole app, è ovvio che +RAM = +App in contemporanea…
Come disse Fantozzi: “è una cagata pazzesca!”
Innanzitutto il sito che linkate in “via” ha capito proprio male (per rendere efficiente l’applicazione è meglio avere il quadruplo della RAM libera rispetto a quella necessaria, ma questo vale solo per poter invocare il garbage collector meno spesso), e secondariamente il link su quora spiega in maniera insulsa il tutto.
Aggiungiamo poi che anche iOS ha un suo garbage collector, anche se funziona in modo diverso, come giustamente dice.
E, infine, i grafici che riporta sono relativi a Java “standard”, quello che si usa sui PC e sui server, non a Dalvik e ad ART, che hanno un gc diverso.
Ciliegina: quando un processo termina, non entra in azione il gc, ma è il kernel che marca come libera la memoria precedentemente occupata dal processo, e lo fa in un nanosecondo.
Il motivo per cui iOS è più fluido di Android è stato sviscerato milioni di volte.
Semplicemente dà al processo UI una priorità realtime, più alta di tutti gli altri. Anzi, non so se hanno cambiato qualcosa, ma nelle prime versioni addirittura congelava qualsiasi altra cosa (compresi i download) per fare le animazioni. Bastava tenere il dito sullo schermo per un paio di minuti durante il download di una pagina web per mandare in timeout la connessione.
iOS ha meno memoria perché Apple vuole che abbia meno memoria. Così gli utenti non possono avere troppe applicazioni in multitasking, e i programmatori sono costretti ad ottimizzare al massimo l’uso della RAM. In questo modo sperano di migliorare la durata della batteria.
Dall’altro lato ci sono gli utenti iOS che si lamentano che il browser non riesce a tenere più di due tab aperte senza dover riscaricare le pagine quando ne hai 4 o 5 e passi da una all’altra.
Allora
I grafici non li abbiamo riportati anche noi per questo motivo, poi, dici che il GC non entra in funzione quando viene chiusa un’app, ma citando Wikipedia “In informatica per garbage collection (letteralmente raccolta dei rifiuti, a volte abbreviato con GC) si intende una modalità automatica di gestione della memoria, mediante la quale un sistema operativo, o un compilatore e un modulo di run-time, liberano le porzioni di memoria che non dovranno più essere successivamente utilizzate dalle applicazioni. In altre parole, il garbage collector annoterà le aree di memoria non più referenziate, cioè allocate da un processo attivo, e le libererà automaticamente.” Ci tengo a sottolineare l’ultima parte. iOS ha un suo GC, ovviamente, che però funzionando in maniera diversa non può essere paragonato ad Android. Che ho scritto nell’articolo?
Anche io, leggendo l’articolo, avevo capito che fosse proprio il GC ad occupare il quadruplo della ram per l’eliminazione dei leftover dei processi, che è un paradosso di per sè.
Mi sembra molto più adeguata e coerente la risposta dell’utente cui sopra, senza neanche prendere in considerazione il fatto che iOS è un sistema costruito per essere ottimizzato per un determinato tipo di hardware, se non avesse nessun problema a gestire tutto con poca ram, non avremmo visto la fine che ogni versione del SO fa fare al telefono di due generazioni precedenti. Oltretutto la politica dei “pochi giga” in relazione al “tenere a freno i developer” è ampiamente supportata dal fatto che si ostinano a mantenere una batteria ridicola sui propri devices… anche a me l’articolo non è sembrato un granchè, un buono spunto di riflessione, ma non di certo una svolta nell’analisi dei SO mobile come l’articolo enunciava
Appena viene nominato iOS e gli viene fatto qualche complimento lecitissimo subito gli utenti androidiani super obiettivi chiedono la rimozione dell’articolo per motivi che neanche loro riescono a spiegare per poi arrivare ad un generico: “perché non mi piace”. LOL
La spiegazione c’è. Quando andrai in prima elementare ed imparerai a leggere, potrai capirla anche tu :)
Va bene allora iOS con 1gb di ram gira come Android con 1gb di ram. Ahahahahaha quando vedrai anche altri telefoni oltre al tuo barbone magari capirai queste differenze elementari tra iOS e Android. Girano bene entrambi, ma è innegabile che uno fa un lavoro migliore visto che utilizza meno risorse. Ovviamente qui non si parla di prezzi perciò non tirarmi fuori la cosa dei 700€ ma stiamo parlando di tecnologia
Il problema sta nel fatto che io ho ancora un galaxy nexus aggiornato ad android 5.0 da xda con 1gb di ram e va egregiamente. Il Gnex è un telefono di 5 anni fà, fammi vedere un iphone 4 con iOS 8 come gira
l’articolo è pieno di errori…alessandro ha perfettamente ragione, e mi sorprende pure che abbiate scritto sta boiata…
il garbage collector agisce sulle macchine virtuali dei singoli processi, e serve a deallocare gli oggetti che le applicazioni non utilizzano più..
stiamo parlando di OGGETTI deallocati, non di processi…roba di qualche KB di ram, e comunque il GC viene costantemente richiamato….quindi non è questo il motivo per cui android ha bisogno di più RAM…
a mio parere un motivo può essere comunque java: avere una macchina virtuale da sotto comporta un maggior overhead di cpu e ram…ma il motivo principale sta nell’incompetenza di parecchi programmatori android! già che vedi facebook gira sempre sotto come servizio e si piglia 70 mb di ram per ricevere 2 notifiche del …
Fammi capire: secondo te il garbage collector entra in funzione quando viene chiusa un’applicazione perché su Wikipedia (e non – che so – su un whitepaper di Tanenbaum) ci leggi “In informatica per garbage collection […] cioè allocate da un processo attivo, e le libererà automaticamente”.
Mi permetto di insistere su un consiglio che vi è stato proposto poco più sotto: abbiate un briciolo di dignità, cancellate questo articolo.
Se non sbaglio il garbage collection serve per poter recuperare la memoria “smarrita” nell’ambito di uno stesso processo. Quando un processo viene chiuso tutta la memoria relativa si libera, non c’è proprio niente da “collectionare”.
Fondamentalmente in java si usa il GC per svincolare il programmatore dalla liberazione manuale della memoria, impedendo così il famigerato memory leaking.
In altri linguaggi, come c++ invece alcune aree di memoria rimangono allocate se non vengono liberate manualmente dal programmatore con degli unset di variabili.
Quindi quando in java perdo tutti i reference ad un’area di memoria il GC se ne accorge e la libera, in c++ ecc invece se perdo i reference non ho più accesso a quell’area che rimarrà occupata fino al seguente riavvio.
É un problema che affligge windows in maniera molto pesante.
Ok dai commenti l unico che ci capisce qualcosa sembri tu. Io sapevi che il kernel Linux non era per niente compatibile con l’architettura arm e per questo hanno fatto la bischerata della virtual machine che è un po come avere un mac ed emularci windows per usare determinati programmi. Per questo servono più risorse. Correggimi se sbaglio ne vorrei capire di più lol
Sbagliato! Anche se Linus Torwalds ha detto “Spero che i progettisti hardware ARM muoiano in incidenti terribilmente dolorosi, quindi se ne conoscete qualcuno mettetegli qualcosa nel caffè e tagliategli i tubi dei freni”, distribuzioni Linux per ARM ce ne sono a dozzine. Basta cercare “linux arm” su Google.
No, é il contrario, il kernel linux é compatibile con l’architettura arm, ma per garantire una compatibilità assoluta hanno interposto una macchina virtuale java, emulatore se vuoi, tra il livello application e le chiamate di sistema che fornisce api standard su qualunque configurazione/combinazione hardware.
Questo livello in più non é presente in ios perché non ha bisogno di essere compatibile con più architetture. Tuttavia java, che é estremamente compatibile, é molto lento.
Questo provoca notevoli rallentamenti che richiedono hw più prestante.
Attento… Non siamo in ambito generico, ma stiamo parlando del garbage collector di java…
Ogni volta che parlio di java dobbiamo fare riferimento a due livelli. Il gaebage collector di sistema operativo che libera la memoria al termine del processo, si tratta della mmu(memory management unit), parte del kernel, e che si occupa della paginazione della memoria allocandola per i processi.
Java é un processo.
Esegue una macchina virtuale, in ambiente desktop la jvm mentre su android dalvik o art.
La macchina virtuale java ha un suo GC, che si occupa nell’allocazione della memoria virtuale ai programmi che girano su di essa.
Tuttavia il GC di java non entra in azione solo al termine dell’esecuzione, ma ogni qual volta vengano dismesse variabili o oggetti di un programma in esecuzione.
Quindi é in ascolto continuo e USA risorse.
É comunque notorio che java sia un linguaggio a basse prestazioni ma ad alta portabilità(infatti uno stesso apk può essere eseguito su architetture hw differenti: arm v7,arm v8, x86).
Questo permette un’alta frammentazione di dispositivi, cosa impensabile con un sistema operativo come ios, che invece si programma in objective-c derivato dal c++.
Ecco che android rinuncia a prestazioni ed efficienza per realizzare un sistema che ios non potrà mai raggiungere, diffuso tra architetture, usato per i più disparati scopi….
In ogni caso almeno un articolo costruttivo e fatto bene.
Grande Giorgio
Si il solito fanboy google che se larry page e sergey brin gli chiedono di fare lo schiavo dice di si. E poi sarei io quello che non capisce niente? E
Invece di sparare lallate argomenta le tue affermazioni e confuta quelle di Alessandro in maniera razionale e civile, se ci riesci.
Lallate? Fico!
italba mi stupisce sempre, questo “lallate” ha stile devo dire
Una domanda, è possibile che troppa ram (3 o 4 gb) possano considerarsi controproducenti per qualche verso?
Cioè, può essere che se apro un sacco di app me le trovo sulla ram perché il sistema non le chiude visto che c’è spazio ed ho qualche rallentamento?
Che ne pensi?
Ad occhio (non conosco in dettaglio la gestione di memoria degli ARM) mi sembra una leggenda metropolitana risalente all’epoca dell’8088, quando se si aumentava troppo la memoria installata bisognava gestirla in pagine con relativo overhead quando si doveva passare da una pagina all’altra. Oggi, con la gestione dei processi comunque efficiente del kernel Linux che c’è dietro penso che non sia vero.
Italba da quanto tempo
Certo che Alessandro Pellizzari l’hai distrutto eh … Lui ha scritto una spiegazione più che accettabile sull’argomento, e tu lo hai MASSACRATO scrivendo “LoL FaNbOy” .. i miei complimenti, di fronte a così valide argomentazioni si può dichiarare la discussione chiusa…
Ottimo commento per guadagnare like, la senza senso
Per guadagnare UTILISSIMI e PREZIOSISSIMI like, tra l’altro.
Si
*chiedessero *direbbe
Ma sei consapevole delle minchiate che spari ogni santo giorno?
Si si
Un consiglio: ammazzati.
Ma vatti a buttare te ma che vuoi
Lallo qui nessuno sospetta che tu non capisci niente, in effetti siamo tutti qui con la speranza di leggere i tuoi intelligenti commenti, così per farci una cultura
“92 minuti di applausi” cit.
Diciamo che puoi avere anche il 50% di ragione…. ma tu parli da fanboy quindi poca cosa
Ma che ragionamento è? Visto che (dici tu) è un fanboy ha torto a prescindere? Ma che ti sei bevuto?
Nn ho detto che ha torto! Ma nn tutto e giusto
Che cosa secondo te non è giusto? Dillo motivando anche la risposta…
allora spiegacelo bene visto che lo sai. A me interessa l’argomento
Io nn sono all’ altezza ma di certo veder girare un iphone 6 con un giga di ram una bellezza e veder girare un note3 cn tre giga di ram con qualche rallentamento un motivo ci sara’
Ma cosa c’entra?
Te sei un fanboy e non sai neanche come si accende un telefono, mi sto iniziando a chiedere come hai fatto a finire su questo forum.
Ci può scrivere anche un cinghiale, se con lo zoccolo riesce a battere sulla tastiera.
Azz, l’avete scoperto
Quella sara un altra persona che batte con lo zoccolo haha
Bravo bravo
Commento intelligentissimo! Complimenti!
Non so tu quale pseudo-iPhone hai mai utilizzato ma i processi importanti come i download non mi si sono mai interrotti e posso tenere parecchie pagine Safari aperte poi se devono essere ricaricate sinceramente non ci faccio manco caso ci mette un attimo. Poi va beh ovvio che avere 2GB è sempre meglio, sul mio Air 2 la differenza si vede in tante situazioni ma non è così sconvolgente e necessario
Io so che L’iPad mini di mio padre crasha in maniera clamorosa ogni volta che fa operazioni memory-intensive. Google earth muore miseramente appena vado dove ci sono edifici da renderizzare(new York!!!!).
Rai TV dopo ¼ d’ora riempie la memoria e si chiude.
Altro non ho mai fatto con quel coso
Hai pienamente ragione alex
LOL ma che argomentazioni sono? Qua son tutti fanboy Android! Ma scusa e sarebbe un lato negativo voler app che occupano poca ram?
Comunque se non programmi per iPhone penso che tu non possa parlare… oramai fa tutto Xcode, le librerie sono già stra ottimizzate, il programmatore deve scrivere programmi, e anche il più pesante algoritmo che tu possa scrivere, l’iPhone lo esegue velocemente perché hai tutto già fatto!
Pulsanti, azioni, effetti, tutto già scritto da Apple! Quindi è normale che siano stra ottimizzate e occupano poca memoria.
E comunque non credo proprio che lo facciano per risparmiare, ma solo per avere una batteria che dura di più (e personalmente ne so qualcosa, perché sono riuscito a toccare 12 ore di schermo acceso con un 1800 mAh).
No, non è un lato negativo volere app che occupano poca RAM. Finché quel tipo di ottimizzazione non va a discapito delle prestazioni.
Esempio tipico: pagina web. Una pagina con un po’ di grafica, qualche ombra, quache animazione, ecc. può arrivare a pesare, in RAM, 2-300 MB. Puoi tenerla tutta in memoria (se ce l’hai) o tenerci 50 MB e swappare su flash il resto. Se swappi, quando scrolli scatta mentre legge da flash il pezzo che li serve. Se tieni tutto in RAM, non scatta.
Ecco, un dispositivo con meno RAM sarà costretto a swappare (o, come fa iOS, a cancellare dalla memoria altre pagine web o altre applicazioni).
Per venire alla seconda parte di quello che dici, XCode non fa assolutamente niente di quello di cui parli. Lo fa iOS coi suoi framework. Così come lo fa Android. O pensi di doverti scrivere tutti i widget e le animazioni a mano?
Quello che tu chiami “algoritmo” non è un algoritmo, e quando dici “il più pesante algoritmo che tu possa scrivere iPhone lo esegue velocemente” si capisce che non hai idea di cosa sia un algoritmo.
Xcode ti segnala variabili inusate, ti mostra la gestione della memoria, permette di gestire la grafica con lo storyboard in modo assurdo.
Con Android a quanto so, c’è gente che per rendere l’app compatibile con le vecchie versione, deve persino disegnarsi i tasti… quando con Xcode (o i framework, scusa d’aver fatto un abuso di linguaggio) fai tutto trascinando roba grafica (dato che il 90% e passa dei dispositivi iOS ha la versione 7, nonché la penultima.
Ma vabbè ho sbagliato io a commentare, era normale che uno che giustifica a spada tratta Android, non è pronto al confronto. Se non è così, spiegami cosa farebbe un dispositivo con iOS e con 3 GB di ram. Ci sarebbe differenza?
Vuoi dirmi seriamente che l’unico problema siano le schede aperte sul browser?
Non so se tu conosci tutti sviluppatori android che vanno avanti di blocco note. Se è così il tuo ragionamento non fa una piega.
Fortunatamente NESSUNO sviluppa android da blocco note ma usa un IDE, che sia Eclipse o Android Studio.
Questi due IDE, esattamente come Xcode, segnalano all’utente variabili inutilizzate, suggerimenti su ottimizzazioni di codice, forniscono profiler e mettono a disposizione la modalità visuale per dichiarare la schermata. In modalità visuale trascini sullo schermo bottoni, radio, inputbox e quello che ti pare, esattamente come descrivevi poco fa con Xcode.
Chiaro poi che se lo sviluppatore è una zappa e non usa i Weak dove servono, prima o poi si arriva a Memory Leak, ma questo è ben differente da quanto stai dichiarando tu.
La base della motivazione che rende iOS un sistema ugualmente fluido con meno RAM a disposizione è molto semplice: il progettista (e poi lo sviluppatore di iOS) devono sviluppare un OS per una manciata di devices che conoscono bene. Per Android ogni poco ne esce uno e questo è sia un bene che un male.
Android Studio fa lo stesso (variabili inutilizzate, GUI per le interfacce, con preview in tempo reale anche su 100 display diversi) oltre ad altre cose (refactoring del codice, analisi statica, ecc. ecc.)
“Ho sentito” non ha molto senso in una discussione tecnica. Quando usi un Button avrà automaticamente un certo stile in Gingerbread, uno diverso in ICS e un altro ancora in Lollipop, senza dover fare niente. Forse quelli che si disegnano i bottoni lo fanno perché vogliono uno stile non di sistema, o perché stanno facendo una webapp e non un’app nativa.
Il tuo sbaglio nel commentare non è nel cercare di discutere con un androidiano (sono sempre contento di farlo), ma di farlo su un piano non tecnico o sul “sentito dire”. Scaricati Android Studio e l’SDK (sono entrambi gratuiti e multipiattaforma, a differenza di XCode) e vedi cosa ci puoi fare.
Per quanto riguarda la RAM: non basta mai. Più ne hai e più ne usi. Un iOS con 3 GB di RAM potrebbe permettersi di tenere più app in memoria ed essere più veloce a switchare, invece di killarle e riaprirle. Esattamente come Android.
Entrambi girano bene con 1 GB (Android anche con 512MB, iOS non si sa perché non fanno più dispositivi con meno di 1 GB), ma entrambi girano MEGLIO con 3 GB. Pensa che io ne vorrei 4 o 8…
Pensavo fosse perchè fa un decimo delle cose che fa Android,
quindi mi sbagliavo?
per non parlare dell’assenza della microSd, di conseguenza leggere da una sola memoria.
No no, per niente!
Perché, come diceva Steve, l’iPhone è semplicemente e solamente “a phone, an iPod and a web browser.”.
Penso proprio di no.
E invece non è una cavolata… È una verità assoluta… Purtroppo il sistema java è obsoleto (un pó come il sistema x86 per computer)
In cosa sarebbe obsoleta l’architettura x86?
Credo che con x86 si riferisca ai 32-bit
nono, la x86-64 è solo un estensione della x86 standard, come efficienza è allo stesso livello. E’ un’architettura nata negli anni 70 per processori a 16bit, è decisamente più vecchia dei vari arm, nonostante tutte le modifiche fatte da intel che l’hanno migliorata enormemente il cuore rimane quello, ma la retrocompatibilità è troppo importante per permettersi di sviluppare da zero un nuovo sistema (che è già in sviluppo da svariati anni, itanium 2)
Guarda che i processori moderni hanno comunque un “core” RISC. Il fatto che riescano ad interpretare i comandi CISC non c’entra niente!
1. Lo so, leggi il mio commento subito sopra.
2. Qui non ho mai parlato di CISC e RISC, e l’efficienza di una CPU non è basata solo su quello. Ho semplicemente detto che x86 è vecchia, e credo che questo sia un dato di fatto.
L’architettura x86 è un’architettura CISC (complex instruction set computer), il cui set di istruzioni macchina è vastissimo: dal punto di vista della programmazione è una comodità, ma questo fatto complica notevolmente l’elettronica del processore, e quindi crea rallentamenti (per motivi che è troppo lungo spiegare).
Le architetture odierne sono architetture RISC (reduct instruction set computer): poche istruzioni macchina, elettronica del processore più semplice, maggior efficienza.
La Intel, e di conseguenza pure AMD, mantengono le loro odierne architetture retrocompatibili con l’instruction set dell’x86. Se non lo facessero, gli odierni processori sarebbero più efficienti, ma tanti programmi scritti per la vecchia architettura non funzionerebbero più; è indubbio però che la x86 è obsoleta, ma il mondo si deve prima aggiornare…
Infatti gli atom bay trail hanno dimostrato di essere poco efficienti, vero?
Cosa c’entri questa domanda non l’ho ben capito. Non ho parlato di un preciso modello di processore, ma ho semplicemente illustrato la situazione odierna. Se eliminassero la retrocompatibilità migliorerebbero le prestazioni, ma si perderebbe la compatibilità con una marea di programmi, ergo si aspetta.
Inoltre, il processore andrebbe riprogettato da zero, con ingenti costi (e scleri per gli ingegneri).
È un discorso complesso, non serve fare domande provocanti tanto per.
Da come hai scritto te sembra che solo i processori ARM siano efficienti, invece non è affatto vero e Intel l’ha dimostrato.
No! Io non ho manco citato i processori ARM, ma credo di aver capito il punto di disaccordo: ARM significa “advanced RISC machine”, ma ciò non significa che è l’unica (o tra le poche) architetture che utilizzano un set di istruzioni RISC, anzi.
Tutti i processori odierni (eccetto certi per applicazioni particolari) utilizzano il set RISC. L’obsolescenza è data dalla retrocompatibilità, spero sia chiaro questo.
Inoltre ARM è un’architettura per sistemi embedded, mentre la x86 è general purpouse.
Ps. nella precedente risposta intendevo “domande provocatorie”, quelle provocanti le rimandiamo ad una prossima volta :D
Una piccola precisazione: l’attuale x86 è un ibrido tra RISC e CISC se non erro, ha un cuore RISC per rendere più veloci le istruzioni più semplici, ma alla fine risulta come un CISC.
Comunque si, come dici tu l’x86 è molto inefficiente, e l’unico motivo per cui è mantenuto è la retrocompatibilità. C’è un motivo per cui intel sta sviluppando da anni ITANIUM (nuova architettura RISC mai lanciata perchè non retrocompatibile, sarebbe un casino).
Sì, è corretto quel che dici. In teoria sarebbe RISC, in pratica…meh!
Quindi aspetta aspetta se io ipoteticamente montassi uno snap su un pc sarebbe più prestante di uno dei tanti intel i3 ecc
Ha detto che eliminando la retrocompatibilità gli x64 sarebbero ancor più efficienti. Non ha detto che sono inefficienti.
Ah lol ho scritto x64 =D
Il sistema java? Quest’affermazione mi fa comprendere che tu non sappia minimamente di quello che parli..magari apriti un qualsiasi sito di offerte di lavoro, per vedere quanto sia obsoleto…
Ma che stai a dire???? Lo conosce eccome java….java the hutt…………………
tu si che ne sai!!!
a parte la spiegazione su java, più ram significa multitasking più avanzato, e iphone con il suo misero giga di memoria ha infatti un multitasking ridicolo
iOS ha una migliore gestione della Ram, ed è più efficiente per vari motivi non solo per questo processo di runtime JAVA, iOS utilizza la tecnica dell’ibernazione per spostare un app dalla Ram alla memoria di massa quando essa nn viene usata, Non gira su una macchina virtuale, per questo il codice viene compilato e non interpretato.. Android ha fatto grandi passi in avanti in questo senso .. Adesso ha un monitoring dei processi che occupano ram e che consumano batteria, ha una nuova macchina virtuale chiamata ART ecc .. Moto G girà su 1 Giga di ram e va che una favola ..
[…] (…)Continua a leggere Perché un iPhone ha bisogno di un GB di RAM a fronte dei 3GB dei top di gamma An… […]
[…] (…)Continua a leggere Perché un iPhone ha bisogno di un GB di RAM a fronte dei 3GB dei top di gamma An… […]
Morale della favola: Java fa schifo. Comunque si sa che java è così ma non ho mai capito perché viene ancora usato
Allora prima studia e poi scrivi.
Java fa schifo? Senza offesa, ma dopo questa puoi davvero spegnere il computer e andartene a fare quello che sai fare meglio. Ti dico un solo numero: 3 MILIARDI. 3 miliardi di dispositivi utilizzano Java. Vatti a studiare il motivo.
Beh se però ci pensi anche windows è ultra diffuso in tutto il mondo ma ciò non significa che sia una figata assoluta..
Ma che cosa stai dicendo? Stai paragonando un prodotto messo in vendita con una piattaforma open source. Paragonando un prodotto venduto spesso e volentieri obbligatoriamente con un sistema hardware ad una piattaforma gratuita della quale è possibile scegliere di avvalersi o meno. Pensa a questo, prima di scrivere.
Intanto ios é più veloce di android per il primo mese (massimo) dopodiché incomincia a rallentare anche lui
Mamma mia che pressapochismo… non so se sia più imbarazzante la risposta in sé o il fatto che una sito come il vostro, che si propone come “riferimento” per un certo settore, si prenda addirittura la briga di farci un articolo e pubblicarlo.
A ‘sto punto fate prima a copiare/incollare gli articolini di tecnologia di Repubblica…
Le vere informazioni approfondite sulla tecnologia sono quelle di StudioAperto.
Perfetta conoscenza del campo e perfetta pronuncia dei termini. X°°°°D
Eeehhh no, caro lei: Kazzenger rimane il riferimento di settore per queste cose – e a quanto pare, qui, ci se ne approfitta a mani basse…
Ci sono smartphone tipo Huawei ascend P7 che ho dovuto vendere perché laggava in un modo spaventoso, eppure aveva 2 giga di ram, ma sicuramente non era ottimizzato, a volte penso che producono smartphone tanto per venderli, e non vengono ottimizzati per niente. Infatti un nexus non soffre mai di lag e questo anche perché ha una UI semplice e funzionale.
Forse anche perché ios non ha tante funzioni da gestire a differenza dei top gamma android
Huawei y300 512mb di ram…… lo possiedo da2anni
È uscito nel Q2 2013.
Stai parlando con Marty McFly….
SVEGLIA FANBOYS ! ho un s5 e non prendero mai un iphone xke è vero che ci puoi fare il triplo delle cose, ma soprattutto android lo puoi PERSONALIZZARE, ma perfavore un po di obiettivitá non si puo negare che iphone gira meglio di android con 1 gb di ram.stupidi fanboy quando avrete piu di 13 anni magari vi renderete conto di non avere AZIONI google e che le critiche possono solo contribuire a migliorare l’unico sistema personalizzabile che ripeto mo tengo stretto
Più di 13 anni? Perche tu quanti ne hai? 14? Ahahahahahhahaahhahaahhahaha
13 e mezzo su dai….. ;-)
Invece di comprare Samsung o LG compratevi un HTC M8 o M7 e vedrete quanto fluidi siano questi smartphone, soprattutto nel tempo,questi non rallentano,invece di prendere Apple che è un mondo chiuso!
Abbiate un briciolo di dignità : cancellate questo articolo.
Una delle uniche cose che ios ha meglio di Android e da cui dovrebbe copiare oltre al minimo consumo di batteria
“MINIMO CONSUMO DI BATTERIA”?????!!!!!??????
Si guarda le capacità che ha l’iphone in confronto all’autonomia in confronto alle mega batterie che i produttori android devono usare per tenere strada
Se guardi all’autonomia PUBBLICIZZATA da Apple va bene, ma chiedi ad un qualunque utente se riesce ad arrivare a sera…
Eh no io non guardo la pubblicità ma l’ho visto direttamente da mia esperienza di amici giocando e con internet acceso e tutto. Non puoi dire niente su questo
Il confronto lo devi fare a parità d’uso e a parità di hardware. Se l’iPhone 6 ha un display più piccolo e con meno risoluzione del telefono con cui lo confronti OVVIO che consumi di meno!
No no ho confrontato alla pari e secondo me è per l’hardware e il sistema operativo molto ottimizzato
Alla pari con QUALE telefono? E con QUALI applicazioni attive?
Iphone 4s 5s 6 plus con musica e giochi un po e con internet sempre acceso
Hai detto che hai fatto dei confronti, vuol dire con telefoni Android! Quali?
I top della gamma
Si, vabbè, torna a giocare coi compagnucci delle elementari, va…
Stupido guarda che tu non vuoi ammettere i tuoi errori ignorante
Ma se hai sparato una raffica di ca##ate per dieci post di fila, ancora parli? Ma vergognati!
Lascialo stare, è di sicuro un troll ahahah
cambia il punto di vista: chiediti perchè Apple non monta batterie dello stesso amperaggio di quelle utilizzate dalla concorrenza e non allunga così l’autonomia dei suoi iDevices che è notoriamente non esaltante.
ROTFL
Quindi se ad esempio un appusa 50 MB di RAM ad Android ne servono da 200 a 400 per liberarla/riciclarla? Ho capito bene?
Ad IPhone basta un giga di RAM perché
Quindi un oneplusone che ospita 3gb di RAM e un processore quadcore perché è più piccolo di 6plus?
Perché non è fatto di m.rda come iphone (tecnologicamente parlando).
Credo che iphone spenda molto in sw, che si fa in casa, e poco in hw, che compra.
Risparmia dalla ram ai chip della CPU, passando per la fotocamera e la batteria.
Non mi spiego come fa ifogn 6 a essere più grosso di gs3 che è vecchio quasi 3 anni ed ha lo schermo più grande…
Beh, un A8 costa quasi quanto uno snap top di gamma, gli A7 uguali visto il processo produttivo a 28nm, la fotocamera non è per nulla male a livello ottico (che poi è ciò che incide sulla spesa). Sinceramente non capisco nemmeno io perché sia grande quanto il mio s4 avendo uno schermo e una batteria più piccoli… Bah…
Mamma mia dove andremo a finire… Se un sito come voi si affida a mezzi come yahoo answer…
in stile yahoo answer non yahoo
Temo di non aver capito
Errata corrige ho capito, tanto è lo stesso
sì infatti, resta un fail dell’autore lo stesso
Peccato perche mi sembrava uno dei migliori autori di androidiani
Tutti sbagliano, poi vabbè è domenica dai, possiamo perdonarglielo…
Scusate, ma di che “Android” stiamo parlando? Ho qui un Nexus 7 con Lollipop: In uso ha 8 processi. 14 nella cache. Di fianco un Note 3 con 28 processi in uso e 21 nella cache. Di fatto il secondo ha 1.71 Gb di Ram occupati a fronte dei poco più di 400 del primo. Servono 2 o 3 Gb in base a quante “cose” si mettono in uno smartphone. Se metto un sensore di impronte, se metto un sensore di battito cardiaco, mi connetto via Bluetooth alla bilancia di casa, ho attivo il rilevamento della penna, il controllo delle gestire e schermi intelligenti e simili… è ovvio che ogni sensore ha un servizio suo dedicato, che viene messo in memoria sia che lo usi che non lo usi. Ad ogni avvio l’ameno 8 o 9 servizi se non di più non mi servono a nulla, ma partono e prendono ram.
iPhone che cosa ha in defintiva? Niente.
Risposta al titolo: Perchè l’ultimo iPhone ha le caratteristiche di un telefono di 3 anni fa. Anche il mio Galaxy Nexus (che ha 3 anni) ha 1 GB di RAM! :)
Articolo impreciso e inesatto in più di un punto e anche molto approssimativo. E lo dico da ingegnere informatico e programmatore JAVA.
Tutti ingegneri ma nessuno capisce un ca###o
Invece che ca##o di troll sei tu lo abbiamo capito tutti.
Perche ad apple non servono i numeri…3 giga sono inutili e solo marketing…quando lo capirete e sempre presto!!!! Parla un possessore di note3
Lasciatelo perdere, è un troll da due soldi. La settimana scorsa aveva un iPhone 6!
basta notare l’uso della grammatica
Tutti hanno sempre il cellulare di cui si parla. Un articolo parla di xiaomi? Io ho un mi4. Parla di Motorola ? Ho un moto g. Di Apple? Ho un iPhone 6.
Ma a te chi ti conosce????
Non c’è mica bisogno di mangiare insieme a te per capire che razza di me##a sei. Ed è proprio inutile che cerchi di cancellare i miei post, i TUOI post restano comunque registrati e bastano a far capire a tutti che sei solo “nu troll é cartone”.
Ma non avevi ifogn 6?
Certo ripeto per l ennesima volta ho un note3 un iphone 6 un ipad air2 e tra poco prendero il note4 al posto del 3
Che te ne farai di un note e di un iphone 6 plus lo sai solo tu. Ipad lo capisco, ma non capisco proprio il note a questo punto.
Non mi voglio fare I cavoli tuoi, ma dato che hai detto di avere figli e un audi a3 recente, e di fare il carpentiere, devi essere proprio un bravo carpentiere….
Ma lui con i telefoni ed i tablet ci fa collezione! Ha un palazzo di otto appartamenti da 110 metri quadri!
non è che lo fanno per risparmiare? xD
Il gc , da programmatore java ed android, sapevo che servisse alla VM per liberare gli oggetti non usati dalla heap. Sicuramente l’efficienza e la velocità non hanno mai fatto il punto di forza di java, a differenza della portabilità e della scalabilità. Ios è proprietario quindi sono due cose diverse e non paragonabili. La storia insegna che il proprietario ha sempre perso nel lungo periodo. Ma questa è un’altra storia…
Se vogliamo essere precisi “che non hanno più un puntatore associato” all’interno dello stack dell’applicazione!
Non so se é questo sia il motivo o quello di altri utenti che hanno detto la loro sull’argomento ma una cosa é sicura: android va migliorato sia da questo punto di vista che quello delx la consumo eccessivo di batteria.
Non so se nella LolliPop abbiano prestato attenzione a questo problema.
È vero che con piú di un gb di ram lo smartphone é piú veloce ma é vero anche che android non mette nessuno strumento ufficiale x gestire gli autorun. Ci sono programmi, giochi che si caricano inutilmente sulla ram all’accensione del cell e non puoi vederli se non con programmi specifici. Questo fa si che viene occupata ram che contribuirà ad un consumo maggiore della batteria.
La stessa app di Facebook, anche se viene chiusa correttamente rimane sempre sulla ram e se viene “a crudo” si riaprirà nuovamente. Assurdo..
In piú ricordo che provarono a caricare il s. O. windows phone su un Samsung e videro che la batteria durava molto di piú.
Tutto questo x dire che android pur essendo un bel sistema, va migliorato e non credo che le ultime versioni abbiano cercato di risolvere..
Secondo me è anche l’ottimizzazione che fa la sua parte.. Basti pensare a z3c che con una batteria non enorme (2600mah) riesce a coprire 2 giornate normali.. Nonostante l’ottimo hardware. Sony sotto questo punto di vista ha fatto un ottimo lavoro.
Perchè android vuole più RAM? semplicissimo
1) android vannilla non vuole piu ram di quanta ne voglia iOS quindi bastano 1GB di ram e se ne ciuccia si e no 300MB o meno.
2) android vuole giga e giga di ram perchè i produttori di smartphone riempiono di mierda il codice con le loro strepitose P.o.r.c.a.t.e. proprietarie come home , framework e altra robina da 2 centesimi.
Non entro troppo nel tecnico perchè non ne ho le competenze, mi occupo di altro nella vita. Faccio solo una cosiderazione logica.
iPhone non ha bisogno di tanta RAM? sai che vanto. Con quel che costa, montare un banco da 4GB inciderebbe in modo assolutamente trascurabile sui costi.
iPhone consuma meno energia di Android? eccezionale! ecco come dare una stoccata alla concorrenza montando ad esempio una batteria da 3.000 mAh ed avere un’autonomia realmente fuori mercato. Invece no, fino al 5s hanno montato una misera 1.600 mAh (su uno schermo poco risoluto, peraltro!) in grado di vanificare il vantaggio dovuto al minor consumo…
Hai centrato il problema: iphone va bene NONOSTANTE l’hardware modesto, gpu a parte.
Potrebbero fare un prodotto pazzesco se montassero lo snap 810 al posto di quel ridicolo dual core, se mettessero la focamera sony da 20 max gestita dal loro sw, un banco da almeno 2 gb di ram e una batteria migliore.
Sono come un ristorante affacciato sulla piazza di un bel centro storico: non hanno bisogno di cucinare bene, i clienti ci andranno comunque.
Android non potrà facilmente avere l’efficacia di iOS: un sistema operativo chiuso, realizzato e montato ad hoc su di un solo dispositivo (vendutissimo quindi super testato) ha gioco facile contro un sistema operativo open source montato su centinaia di dispositivi diversi e di diversi produttori. Certo l’enorme diffusione di Android ha ridotto progressivamente il gap e per molti fattori oggi il robottino ha distanziato la mela, non è così per le risorse necessarie a farlo funzionare.
Il processore dual core dell iphone, ma anche il nuovo k1 di nwidia sono a 64 bit e con un processo produttivo a 20 nm. Sono più potenti dei quadcore snapdragon e degli octacore exynos o mediatek perché hanno un architettura migliore è sicuramente più costosi di un commerciale snap 80x per progettazione e costruzione. Su batteria e ram puoi avere ragione. Per 700 euro potrebbero benissimo metterne 8 giga è 20 mpx ( anche se i mpx non sono tutto ricordiamo).
L’ho sempre detto e non mi credeva nessuno…
A parer mio c’è anche il discorso Android-Dalvik VM, o no?
io spero che qualcuno cominci a scrivere programmi per virtualizzare gli o.s. …
Ce ne sono a dozzine!
Di solito difficilmente critico gli articoli… ma questo è IMBARAZZANTE.
Mamma mia….
Non litighiamo e riteniamoci fortunati che con mezza Italia sott’acqua possiamo permetterci di disquisire su puttanate del genere.
Oh, quale onore! Un clone mi mancava proprio! Cos’è, ti vergogni di scrivere a tuo nome?
Io non ci capisco molto di ram e tutto quello che gli concerne ma mi sembra che Alessandro Pellizzari sia uno che sa quello che dice e in ogni caso,contrariamente da altri,ha espresso la sua opinione e ha dato una spiegazione anche abbastanza dettagliata, invece gli ammiratori della mela masticata si sono limitati a dire che Alessandro è un fanboy….perché non esprimere la vostra idea allo stesso modo che ha fatto il nostro fanboy…….chiaccheroni……
Bah secondo me la differenza è palese e sta nel fatto che apple crea e ottimizza tutto in base alle specifiche dei propri terminali mentre android crea un sistema operativo che poi i brand personalizzano aggiungendo feature che richiedono sempre più ram. Se google si auto producesse un solo modello allora si che vedremmo un android snello e fluido ma non è la sua politica e non credo gli convenga
Articolo basato su premessa/domanda sbagliata quindi inutile cercare la risposta…
Ed il fatto che Android funzioni tramite la Dalvik Virtual Machine non c’entra nulla?
Se è vero ciò che è stato scritto l’adozione di ART dovrebbe colmare in gran parte questo gap… per quanto riguarda la RAM il problema c’è, ma allo stato attuale non è rilevante principalmente per lo scarso costo del componente.
Dal lato batteria invece il discorso cambia ed anche qui, stando a quanto si è scritto, ci dovrebbero essere rilevanti passi in avanti grazie ad ART.
Mamma mia, non pensavo di scatenare questa ondata di commenti. Disqus non ce la fa nemmeno ad aggiornarmi la pagina in modo coerente! :D
Io onestamente non chiedo che sia rimosso l’articolo, che, tra le altre cose, dice chiaramente che sta citando un utente su Quora. Io avrei fatto un po’ più di ricerca prima di scriverlo, ma mi rendo conto che a volte si è sotto pressione per scrivere un tot di articoli al giorno e scappa qualche cantonata. Ci sono siti che ne sparano di peggiori. :)
Volevo solo approfondire qualche punto, che ho visto è stato ripreso sotto.
Il GC di Android entra in funzione ogni tot (mi pare ogni 3 o 5 secondi, non ricordo) e libera la memoria mentre l’app sta girando. Se un’app è scritta male, non usa riciclo degli oggetti o comunque crea migliaia o milioni di oggetti che vengono abbandonati subito, il GC è costretto a passarseli tutti per controllare che davvero nessuno li usi prima di liberare la memoria. Questo fa rallentare alcune applicazioni, per esempio, quando si scrolla una lista lunga.
Ma il GC di Android funziona dentro la VM. Per come è fatto Android, viene forkata (creata) una copia della VM per ogni processo, diventando una specie di wrapper intorno all’app. Quando un app muore (quindi al termine del ciclo onSuspend(), onSaveInstance(), onStop()) il controllo torna al S.O., che, nel caso di Linux, non fa altro che andare nella tabella della MMU e marcare “free” tutte le locazioni di memoria del processo. Lo fa a livello kernel e al massimo del clock della RAM, quindi non impiega più di qualche millisecondo anche per processi enormi. Ripeto: non tocca la RAM del processo (a meno che non fosse marcata come private, caso tipico quando si devono gestire password, ma non divaghiamo :)), che quindi rimane lì, e viene semplicemente sovrascritta quando servirà ad altri processi.
Quello che ogni tanto rallenta le app in chiusura è la fase onSuspend() e onSaveInstance(), che hanno un timeout di 5 secondi per consentire all’app di salvare su db/flash/preferences il proprio stato. Se un’app è lenta a farlo, il S.O. semplicemente aspetta paziente, e nel frattempo magari individua qualche altra app da uccidere. 5 secondi sembrano pochi a dirlo, ma a vederlo sono un’eternità.
Per il discorso RAM, ci sono dispositivi Android con 512 MB di RAM che girano fluidissimi e con parecchie app aperte.
Come dicevo, il “problema” di Android è che non privilegia in alcun modo il refresh dello schermo. Assegna una priorità maggiore all’app in primo piano, ma non congela mai quelle in background. Questo porta, a volte, le app a “scattare” quando un processo in bg scrive su flash, per esempio. Provate a scrollare la lista del PlayStore mentre state aggiornando le app, per esempio, e lo vedete subito.
A livello visivo è meglio iOS, sicuramente. A livello “hackeroso” io preferisco sapere che le app in background hanno possibilità di lavorare anche quando stresso l’app in foreground. È questione di gusti.
Ma veniamo a Java. :)
Personalmente lo odio come linguaggio. È eccessivamente verboso, convoluto, e in alcuni casi limitato e limitante. Ma ha un vantaggio enorme: write once, run anywhere (nello stesso ambiente :P).
Su server, la VM è ottimizzata per fornire risposte il più rapide possibile, a volte a scapito della RAM, quindi il GC è meno aggressivo ed entra in funzione più raramente. Per questo un’app ha bisogno, per girare fluida, del quadruplo o oltre della RAM che usa normalmente. Pensate a un server che, sotto stress con centinaia di connessioni al secondo, si ferma per 5-10 secondi per far girare il GC. Il risultato è che si intasa la coda di connessioni e, appena il GC ha finito, si trova un carico 10 volte superiore.
Questo è il senso vero dei grafici e della risposta data su Quora (e spiegata pessimamente).
Su Android la GC viene invocata più spesso, perché la RAM è poca e va sfruttata meglio, e ha un algoritmo più “stupido”, ma anche più rapido.
Con ART lo hanno leggermente migliorato, ma il vantaggio più grosso è che l’applicazione, al momento dell’installazione, viene precompilata in codice più vicino a quello della CPU, quindi ha prestazioni più simili a quelle che avrebbe un’app in C++.
È più lento a installare (e occupa più spazio su flash) ma è molto più veloce durante l’uso.
A livello di prestazioni pure rimane comunque più lento di ObjC o C++ (ma c’è l’NDK), ma il divario è più ristretto e soprattutto è molto più semplice da programmare, oltre a essere più stabile, perché gestisce automaticamente molte cose (tra cui la memoria).
Per fare le cose veloci e fluide ci sono l’NDK, renderscript, opengl, ecc.