Instrumenti, kas ir Xcode daļa, galvenokārt ir paredzēti iOS, macOS, WatchOS un TVOS lietojumprogrammām. Lai gan tas ir neticami efektīvs, lai noteiktu atmiņas noplūdes šajās platformās, izmantojot tādus rīkus kā noplūdes instruments un atmiņas diagrammas atkļūdotājs, tā tiešā piemērošana MVVMCross lietojumprogrammām ir ierobežota. MVVMCROSS ir starpplatformu ietvars, kas ļauj attīstīt vairākas platformas, ieskaitot Android un iOS.
Tomēr, ja jūs izstrādājat MVVMCROSS lietojumprogrammu iOS, varat izmantot instrumentus, lai reāllaikā izsekotu atmiņas noplūdes jūsu lietotnes iOS daļai. Lūk, kā:
Izmantojot instrumentus iOS MVVMCROSS lietojumprogrammām
1. Palaišanas instrumenti: sāciet, atverot projektu Xcode un atlasot Produktu> Profilu. Tas palaidīs instrumentus.
2. Izvēlieties noplūdes veidni: Dialoglodziņā Template Selection sadaļā Atmiņas izvēlieties noplūdes veidni. Šī veidne ir īpaši izstrādāta, lai noteiktu atmiņas noplūdes.
3. Palaidiet savu lietotni: noklikšķiniet uz pogas Ieraksts, lai sāktu lietot lietotni. Mijiedarbojieties ar savu lietotni, kā jūs parasti būtu, īpaši koncentrējoties uz jomām, kurās var rasties atmiņas noplūdes.
4. Analizējiet rezultātus: pēc mijiedarbības pabeigšanas pārtrauciet ierakstīšanu. Instrumentos tiks parādīta grafika, kas parāda atmiņas izmantošanu laika gaitā. Ja ir atmiņas noplūdes, jūs redzēsit atmiņas lietošanas palielināšanos bez atbilstoša samazinājuma, ja objekti ir jānovērš. Zem diagrammas atradīsit noplūdušo atmiņas bloku sarakstu, kā arī kaudzes pēdas, kas norāda, kur noplūdes tika piešķirtas.
5. Identificējiet un novēršiet noplūdes: izmantojiet kaudzes pēdas, lai atrastu koda noplūdes avotu. Bieži sastopami jautājumi ir saglabāšanas cikli, kur objekti ir spēcīgas atsauces viena uz otru, novēršot darīšanas noteikšanu. To fiksēšana ir saistīta ar saglabāšanas ciklu pārtraukšanu, bieži izmantojot vājas vai nepiemērotas atsauces.
ierobežojumi platformām, kas nav IOS
MVVMCROSS lietojumprogrammām, kuru mērķauditorijas atlases platformas, izņemot iOS (piemēram, Android), instrumentus nevar izmantot tieši. Tā vietā jums būs jāizmanto platformas specifiski rīki atmiņas noplūdes noteikšanai:
- Android: izmantojiet tādus rīkus kā Android Studio atmiņas profilētājs vai trešo personu bibliotēkas, piemēram, noplūdes kanāls.
- Citas platformas: izmantojiet platformai raksturīgus atmiņas profilēšanas rīkus vai bibliotēkas.
Rezumējot, lai gan instrumenti ir ļoti efektīvi, lai noteiktu atmiņas noplūdes iOS lietojumprogrammās, ieskaitot tos, kas veidoti ar MVVMCross iOS, tas nav piemērojams platformām, kas nav IOS. Starpplatformu izstrādei jums jāizmanto katrai mērķa platformai raksturīgie rīki.
Atsauces:[1] https://www.netguru.com/blog/what-are-ios-memory-laks-and-how-to-detect-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-lak-check-real-ime-application
[4.]
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-becuse-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