Lai identificētu atmiņas noplūdes MVVMCROSS lietojumprogrammās, izmantojot atmiņas grafika rīku, varat veikt šīs darbības, kuras parasti ir piemērojamas iOS izstrādei ar Xcode. Lai arī MVVMCross ir savstarpējās platformas ietvars, atmiņas diagrammas rīks ir raksturīgs iOS izstrādei Xcode ietvaros.
Izmantojot atmiņas diagrammas atkļūdotāju
1. Palaidiet savu lietotni ar atmiņas grafika atkļūdotāju: **
- Atveriet savu projektu Xcode un pārliecinieties, ka atrodaties atkļūdošanas režīmā.
- Dodieties uz atkļūdošanas izvēlni un atlasiet atkļūdošanas atmiņas grafiku. Tas palaiž jūsu lietotni ar iespējotu atmiņas diagrammas atkļūdotāju.
2. Skrien cauri serdes plūsmām: **
- Pārvietojieties pa savas lietotnes galvenajām plūsmām, piemēram, skatu kontrolieru atvēršanu un aizvēršanu, darbības, kas saistītas ar datu saistīšanu, un visi citi kritiski ceļi, kas varētu ietvert atmiņas sadali.
- Atkārtojiet šīs plūsmas vairākas reizes, lai redzētu, vai atmiņas lietošana negaidīti palielinās.
3. Ņemiet atmiņas momentuzņēmumus: **
- Pēc šo plūsmu palaišanas paņemiet atmiņas momentuzņēmumu, vēlreiz noklikšķinot uz atkļūdošanas atmiņas diagrammas pogas. Tas pārtrauks jūsu lietotni un nodrošinās pašreizējā atmiņas stāvokļa momentuzņēmumu.
4. Pārbaudiet atmiņas momentuzņēmumus: **
- Atmiņas diagrammas atkļūdotājs jūs redzēsit objektu grafisku attēlojumu atmiņā kā mezglus, un starp tiem ir attiecības kā malas.
- Meklējiet objektus, kuriem vairs nevajadzētu būt atmiņā. Piemēram, ja redzat vairākus skata kontroliera vai skata modeļa gadījumus, kas būtu jāizvērtē, tas varētu norādīt uz atmiņas noplūdi.
5. Identificējiet noplūdinātus objektus: **
- Noklikšķiniet uz mezgla, kas attēlo objektu, kam nevajadzētu būt atmiņā. Atkļūdotājs parādīs jums visas atsauces uz šo objektu, palīdzot noteikt, kāpēc tas tiek saglabāts.
- Izmantojiet objekta grafiku, lai izsekotu vecāku mezglu vai objektu, kas noplūdušo objektu tur atmiņā.
6. Izlabojiet noplūdi: **
- Kad esat identificējis noplūdes avotu, pārskatiet kodu, lai atrastu, kur tiek turētas spēcīgās atsauces. Bieži sastopamie jautājumi ir:
- Neizludināti pasākumu apstrādātāji.
- Spēcīgas atsauces uz skatu modeļiem uz skatiem vai citiem objektiem, kuriem vajadzētu būt vājiem.
- saglabāt ciklus datu saistījumos.
7. Pārbaudiet labojumus: **
- Pēc izmaiņu veikšanas potenciālo noplūžu novēršanas laikā atkārtojiet palaišanas procesu caur kodolu plūsmām un uzņemot atmiņas momentuzņēmumus, lai pārliecinātos, ka atmiņas izmantošana negaidīti nepalielinās.
Papildu instrumenti starpplatformu izstrādei
Lai gan atmiņas grafika rīks ir raksturīgs iOS, starp platformas ietvariem, piemēram, MVVMCross, jums, iespējams, būs jāizmanto arī platformai specifiski rīki citām platformām:
- Android: izmantojiet Android profilētāju vai noplūdes kanālu, lai noteiktu atmiņas noplūdes.
- Windows (Maui): izmantojiet tādus rīkus kā Visual Studio diagnostikas rīki vai trešo personu bibliotēkas, piemēram, atmiņasToolkit.maui, lai identificētu atmiņas noplūdes.
Apvienojot šīs pieejas, jūs varat efektīvi identificēt un novērst atmiņas noplūdes MVVMCROSS lietojumprogrammās dažādās platformās.
Atsauces:[1] https://www.reddit.com/r/dotnetmaui/comments/1c1qlou/maui_memory_leaks/
[2] https://proandroiddev.com/memory-liaks-in-rective-android-programma-a4AD2B34466A
[3.]
[4] https://www.netguru.com/blog/what-are-ios-memory-laks-and-how-to-detect-them
[5] https://www.linkedin.com/advice/1/how-can-you-prevent-memory-liaks-mvvm-skills-software-sign-hsx1c
[6] https://developer.android.com/studio/profile/memory-profiler
[7] https://github.com/dotnet/maui/wiki/memory-liaks
[8] https://forums.developer.apple.com/forums/thread/713062
[9] https://www.tothenew.com/blog/memory-leak-with-memory-graph-debugger/