iOS - Gestione della memoria

La gestione della memoria in iOS era inizialmente non ARC (Automatic Reference Counting), dove dobbiamo conservare e rilasciare gli oggetti. Ora supporta ARC e non dobbiamo trattenere e rilasciare gli oggetti. Xcode si prende cura del lavoro automaticamente in fase di compilazione.

Problemi di gestione della memoria

Secondo la documentazione Apple, i due problemi principali nella gestione della memoria sono:

  • Liberare o sovrascrivere i dati ancora in uso. Provoca il danneggiamento della memoria e in genere provoca l'arresto anomalo dell'applicazione o, peggio, i dati utente danneggiati.

  • Non liberare dati che non sono più in uso causa perdite di memoria. Quando la memoria allocata non viene liberata anche se non verrà mai più utilizzata, è nota come perdita di memoria. Le perdite fanno sì che la tua applicazione utilizzi quantità di memoria sempre maggiori, il che a sua volta potrebbe comportare scarse prestazioni del sistema o (in iOS) la chiusura dell'applicazione.

Regole di gestione della memoria

  • Possediamo gli oggetti che creiamo e dobbiamo rilasciarli successivamente quando non sono più necessari.

  • Usa Conserva per acquisire la proprietà di un oggetto che non hai creato. Devi rilasciare anche questi oggetti quando non sono necessari.

  • Non rilasciare gli oggetti che non possiedi.

Gestione della memoria in ARC

Non è necessario utilizzare il rilascio e la conservazione in ARC. Quindi, tutti gli oggetti del controller di visualizzazione verranno rilasciati quando il controller di visualizzazione viene rimosso. Allo stesso modo, gli oggetti secondari di qualsiasi oggetto verranno rilasciati quando vengono rilasciati. Nota che se altre classi hanno un forte riferimento a un oggetto di una classe, l'intera classe non verrà rilasciata. Pertanto, si consiglia di utilizzare proprietà deboli per i delegati.

Strumenti di gestione della memoria

Possiamo analizzare l'utilizzo della memoria con l'aiuto degli strumenti Xcode. Include strumenti come Activity Monitor, Allocations, Leaks, Zombies e così via.

Passaggi per l'analisi delle allocazioni di memoria

Step 1 - Apri un'applicazione esistente.

Step 2 - Seleziona Prodotto e poi Profilo come mostrato di seguito.

Step 3 - Seleziona Allocazioni nella schermata successiva mostrata di seguito e seleziona Profilo.

Step 4 - Vedremo l'allocazione della memoria per diversi oggetti come mostrato di seguito.

Step 5 - È possibile passare da un controller di visualizzazione all'altro e controllare se la memoria viene rilasciata correttamente.

Step 6 - Allo stesso modo, invece di Allocazioni, possiamo usare Activity Monitor per vedere la memoria complessiva allocata per l'applicazione.

Step 7 - Questi strumenti ci aiutano ad accedere al nostro consumo di memoria e a individuare i luoghi in cui si sono verificate possibili perdite.