Instrumentele, parte a XCode, sunt proiectate în principal pentru aplicațiile iOS, macOS, watchOS și TVOS. Deși este incredibil de eficient pentru detectarea scurgerilor de memorie în aceste platforme folosind instrumente precum instrumentul de scurgere și debuggerul graficului de memorie, aplicația sa directă la aplicațiile MVVMCross este limitată. MVVMcross este un cadru multiplă platformă care permite dezvoltarea pentru mai multe platforme, inclusiv Android și iOS.
Cu toate acestea, dacă dezvoltați o aplicație MVVMCross pentru iOS, puteți utiliza instrumente pentru a urmări scurgerile de memorie în timp real pentru porțiunea iOS a aplicației dvs. Iată cum:
Utilizarea instrumentelor pentru aplicațiile iOS mvvmcross
1. Instrumente de lansare: Începeți prin deschiderea proiectului în XCODE și selectând Produs> Profil. Acest lucru va lansa instrumente.
2. Alegeți șablonul de scurgeri: În dialogul de selecție a șablonului, alegeți șablonul de scurgeri sub secțiunea de memorie. Acest șablon este conceput special pentru a detecta scurgerile de memorie.
3. Rulați aplicația: Faceți clic pe butonul de înregistrare pentru a începe să vă profilați aplicația. Interacționați cu aplicația dvs. așa cum ați face în mod normal, în special concentrându -vă pe zone în care suspectați că ar putea apărea scurgeri de memorie.
4. Analizați rezultatele: După ce ați finalizat interacțiunile, opriți înregistrarea. Instrumentele vor afișa un grafic care arată utilizarea memoriei în timp. Dacă există scurgeri de memorie, veți vedea creșterea utilizării memoriei fără scăderi corespunzătoare atunci când obiectele ar trebui tratate. Sub grafic, veți găsi o listă de blocuri de memorie scurse, împreună cu urme de stivă care indică unde au fost alocate scurgerile.
5. Identificați și remediați scurgerile: utilizați urmele de stivă pentru a localiza sursa scurgerilor din codul dvs. Problemele comune includ ciclurile de reținere, în care obiectele păstrează referințe puternice între ele, împiedicând alocarea de tranzacționare. Fixarea acestora implică ruperea ciclurilor de reținere, adesea prin utilizarea referințelor slabe sau neobișnuite.
Limitări pentru platformele non-IOS
Pentru aplicațiile MVVMcross care vizează platforme, altele decât iOS (cum ar fi Android), instrumentele nu pot fi utilizate direct. În schimb, ar trebui să utilizați instrumente specifice platformei pentru detectarea scurgerilor de memorie:
- Android: Utilizați instrumente precum Profilerul de memorie al Android Studio sau bibliotecile terțe precum LeakCanary.
- Alte platforme: utilizați instrumente sau biblioteci de profilare a memoriei specifice platformei.
În rezumat, în timp ce instrumentele sunt extrem de eficiente pentru detectarea scurgerilor de memorie în aplicațiile iOS, inclusiv cele construite cu MVVMcross pentru iOS, nu se aplică platformelor non-IOS. Pentru dezvoltarea multiplă platformă, trebuie să utilizați instrumente specifice fiecărei platforme țintă.
Citări:[1] https://www.netguru.com/blog/what-are-ios-memory-heaks-and-how-to-detect-hem
[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-Heak-check-in-real-time-application
]
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-because-of-not-disposed-viewmodels
[6] https://forums.ni.com/t5/labview/get-object-memory-leak/td-p/4276905
[7] https://forums.developer.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/issues/2884