Norėdami nustatyti atminties nutekėjimą „MVVMCross“ programose, naudodamiesi atminties grafiko įrankiu, galite atlikti šiuos veiksmus, kurie paprastai yra taikomi „iOS“ kūrimui naudojant „Xcode“. Nors „MVVMCross“ yra įvairių platformų sistema, atminties grafiko įrankis yra būdingas „iOS“ kūrimui „XCode“.
Naudojant atminties grafiko derinimo įrenginį
1. Paleiskite savo programą naudodami atminties grafiko derinimą: **
- Atidarykite savo projektą „Xcode“ ir įsitikinkite, kad esate derinimo režime.
- Eikite į derinimo meniu ir pasirinkite Derinimo atminties grafiką. Tai paleis jūsų programą su įjungtu atminties grafiko derintuvu.
2. Vykdykite per pagrindinius srautus: **
- Eikite per savo programos pagrindinius srautus, tokius kaip vaizdo įrašo valdiklių atidarymas ir uždarymas, veiksmai, apimantys duomenų įrišimą, ir bet kokius kitus kritinius kelius, kurie gali apimti atminties paskirstymą.
- Pakartokite šiuos srautus kelis kartus, kad pamatytumėte, ar atminties naudojimas netikėtai padidėja.
3. Paimkite atminties momentinius vaizdus: **
- Atlikę šiuos srautus, dar kartą atlikite atminties momentinį vaizdą spustelėdami mygtuką Debug atminties grafikas. Tai pristabdys jūsų programą ir pateiks dabartinės atminties būsenos vaizdą.
4. Patikrinkite atminties momentinius vaizdus: **
- Atminties grafiko derinime pamatysite grafinį objektų vaizdą atmintyje kaip mazgus, o ryšiai tarp jų yra kraštai.
- Ieškokite objektų, kurie nebūtų atmintyje. Pvz., Jei matote kelis „View Controller“ arba „View“ modelio, kuris turėjo būti išskirtas, egzempliorių, tai gali reikšti atminties nutekėjimą.
5. Identifikuokite nutekėjusius objektus: **
- Spustelėkite mazgą, vaizduojantį objektą, kuris neturėtų būti atmintyje. Derintojas parodys jums visas nuorodas į tą objektą, padėdami nustatyti, kodėl jis išlaikomas.
- Naudokite objekto diagramą, kad susektumėte pagrindinį mazgą ar objektą, kuris išlaiko nutekėjusį objektą atmintyje.
6. Ištaisykite nuotėkį: **
- Kai nustatysite nuotėkio šaltinį, peržiūrėkite savo kodą, kad surastumėte, kur yra stiprios nuorodos. Bendrosios problemos yra:
- neišleisti renginių tvarkytojai.
- Stiprios nuorodos į vaizdų modelius į vaizdus ar kitus objektus, kurie turėtų būti silpni.
- Išlaikyti ciklus duomenų įrišimuose.
7. Patikrinkite pataisas: **
- Atlikę pakeitimus, kad būtų galima ištaisyti galimus nutekėjimus, pakartokite bėgimo per pagrindinius srautus procesą ir atlikdami atminties momentinius vaizdus, kad įsitikintumėte, jog atminties naudojimas netikėtai nepadidės.
Papildomi įrankiai kryžminės platformos plėtrai
Nors atminties grafiko įrankis yra būdingas „iOS“, tokioms įvairios platformos sistemoms kaip „MVVMCross“, taip pat gali tekti naudoti ir kitoms platformoms skirtus platformos įrankius:
- „Android“: naudokite „Android“ profilią arba „Leakcanary“, kad aptiktumėte atminties nutekėjimą.
- „Windows“ (Maui): naudokite tokius įrankius kaip „Visual Studio“ diagnostikos įrankiai arba trečiųjų šalių bibliotekos, tokios kaip „MemoryToolkit.Maui“, kad nustatytumėte atminties nutekėjimą.
Derindami šiuos metodus, galite efektyviai nustatyti ir ištaisyti atminties nutekėjimą MVVMCross programose įvairiose platformose.
Citatos:[1] https://www.reddit.com/r/dotnetmaui/comments/1c1qlou/maui_memory_leaks/
[2] https://proandroiddev.com/memory-leaks-in-reactive-android-programming-a4ad2b34466a
[3] https://careersatdoordash.com/blog/ios-memory-leaks-and-retain-cikle-detection-using-xcodes-memory-graph-debugger/
[4] https://www.netguru.com/blog/what-are-ios-memory-reaks-and-how-todetect-them
[5] https://www.linkedin.com/advice/1/how-can-you-prevent-memory-leaks-mvvm-skills-software-design-hsx1c
[6] https://developer.android.com/studio/profile/memory-profiler
[7] https://github.com/dotnet/maui/wiki/memory-leaks
[8] https://forums.developer.apple.com/forums/thread/713062
[9] https://www.tothenew.com/blog/memory-reak-with-memory-graph-debugger/