Continuo a sentire che le applicazioni Android dovrebbero cercare di limitare il numero di oggetti creati per ridurre il carico di lavoro sul garbage collector. È logico che non si desideri creare un numero enorme di oggetti da tracciare su un ingombro di memoria limitato, ad esempio su un'applicazione server tradizionale creata 100.000 oggetti in pochi secondi non sarebbero inauditi.Modifica dello stile di codifica dovuto alle prestazioni del GC di Android, quanto è lontano?
Il problema è quanto lontano dovrei prendere questo? Ho visto un sacco di esempi di applicazioni Android che si basano su uno stato statico per "velocizzare le cose". Aumentare il numero di istanze che devono essere raccolte dalla spazzatura da dozzine a centinaia può davvero fare la differenza? Posso immaginare di cambiare il mio stile di codifica per creare ora centinaia di migliaia di oggetti come si potrebbe avere su un server Java-EE in piena regola, ma basarsi su un gruppo di stati statici per (presumibilmente) ridurre il numero di oggetti da raccogliere. dispari.
Quanto è veramente necessario modificare lo stile di codifica per creare app Android performanti?
Vorrei anche aggiungere che troverete spesso codice Java che è stato scritto in origine per desktop o server che è estremamente inefficiente e attraverserà una tonnellata di oggetti rispetto alla quantità di lavoro che fa. Ad esempio, ho visto il codice di rete che causa continuamente GC mentre elabora i dati dalla rete. Se il tuo codice sta facendo questo, dovresti davvero cercare di ottimizzarlo, non specificamente a causa di Dalvik, ma poiché non è appropriato per un dispositivo mobile - tutto questo lavoro extra viene direttamente dalla batteria. – hackbod
Per quanto riguarda lo stile che dovrebbe essere effettivamente cambiato, direi che il modo migliore per farlo è scrivere codice che funzioni (e dare un po 'di pensiero al riutilizzo degli oggetti allocati, comunque non molto esteso) e vedere se c'è qualsiasi pressione sul GC. Se c'è, quindi avviare la memoria profilatura del codice e alla ricerca di luoghi in cui è possibile evitare l'allocazione e l'eliminazione di variabili. –