Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Gli strumenti possono essere utilizzati per tracciare le perdite di memoria in tempo reale per le applicazioni MVVMCRoss


Gli strumenti possono essere utilizzati per tracciare le perdite di memoria in tempo reale per le applicazioni MVVMCRoss


Strumenti, parte di Xcode, è progettato principalmente per applicazioni iOS, MacOS, WatchOS e TVOS. Sebbene sia incredibilmente efficace per rilevare perdite di memoria in queste piattaforme utilizzando strumenti come il debugger per lo strumento di perdite e il grafico della memoria, la sua applicazione diretta alle applicazioni MVVMCRoss è limitata. MVVMCROSS è un framework multipiattaforma che consente lo sviluppo di più piattaforme, tra cui Android e iOS.

Tuttavia, se stai sviluppando un'applicazione MVVMCRoss per iOS, è possibile utilizzare strumenti per tracciare le perdite di memoria in tempo reale per la parte iOS della tua app. Ecco come:

Utilizzo di strumenti per applicazioni iOS mvvmcross

1. Avvia strumenti: inizia aprendo il progetto in Xcode e selezionando Product> Profile. Questo lancerà strumenti.

2. Scegli il modello di perdite: nella finestra di dialogo Selezione del modello, selezionare il modello di perdite nella sezione Memoria. Questo modello è specificamente progettato per rilevare perdite di memoria.

3. Esegui l'app: fai clic sul pulsante Registra per avviare la profilazione dell'app. Interagisci con la tua app come faresti normalmente, soprattutto concentrandosi su aree in cui sospettano che potrebbero verificarsi perdite di memoria.

4. Analizzare i risultati: dopo aver completato le interazioni, interrompere la registrazione. Gli strumenti visualizzano un grafico che mostra l'utilizzo della memoria nel tempo. Se ci sono perdite di memoria, vedrai un aumento dell'utilizzo della memoria senza una riduzione corrispondente quando gli oggetti devono essere trattati. Sotto il grafico, troverai un elenco di blocchi di memoria trapelati insieme a tracce di stack che indicano dove sono state assegnate le perdite.

5. Identificare e correggere le perdite: utilizzare le tracce dello stack per individuare la fonte delle perdite nel codice. Le questioni comuni includono i cicli di conservazione, in cui gli oggetti tengono forti riferimenti reciproci, prevenendo il traffico. La correzione di questi comporta la rottura dei cicli di mantenimento, spesso utilizzando riferimenti deboli o non uniti.

Limitazioni per le piattaforme non IOS

Per le applicazioni MVVMCRoss di targeting diverse da iOS (come Android), gli strumenti non possono essere utilizzati direttamente. Invece, è necessario utilizzare strumenti specifici della piattaforma per il rilevamento delle perdite di memoria:

- Android: usa strumenti come il profiler di memoria di Android Studio o le librerie di terze parti come LeakCanary.
- Altre piattaforme: utilizzare strumenti o librerie di profilazione della memoria specifici della piattaforma.

In sintesi, mentre gli strumenti sono altamente efficaci per rilevare perdite di memoria nelle applicazioni iOS, comprese quelle costruite con MVVMCRoss per iOS, non è applicabile a piattaforme non IOS. Per lo sviluppo multipiattaforma, è necessario utilizzare strumenti specifici per ciascuna piattaforma di destinazione.

Citazioni:
[1] https://www.netguru.com/blog/what-are-ios-memory-deaks-and-how-to --tect-them
[2] https://www.reddit.com/r/rust/comments/kpsgin/how_to_find_a_memory_leak_in_a_rust_program/
[3] https://stackoverflow.com/questions/38592689/memory-leak-check-in-real-time-application
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-finding-memory-deaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-deak-because-of-not-disposed-viewmodels
[6] https://forums.ni.com/t5/labview/get-object-memory-teak/td-p/4276905
[7] https://forums.developer.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/issues/2884