Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan værktøjet til hukommelsesgrafen hjælpe med at identificere fastholdelsescyklusser i MVVMCROSS -applikationer


Kan værktøjet til hukommelsesgrafen hjælpe med at identificere fastholdelsescyklusser i MVVMCROSS -applikationer


Ja, værktøjet til hukommelsesgrafen i Xcode kan hjælpe med at identificere fastholdelsescyklusser i MVVMCROSS -applikationer. Sådan fungerer det, og hvordan det kan anvendes på MVVMCross:

Forståelse bevarer cyklusser

Opbevaring af cyklusser forekommer, når to eller flere objekter har stærke henvisninger til hinanden, hvilket forhindrer dem i at blive forhandlet fra hukommelsen. Dette er et almindeligt problem i iOS -udvikling, især når du bruger delegerede eller lukninger, der fanger genstande stærkt.

Brug af hukommelsesgrafværktøjet

1. Kørsel af appen og tager snapshots: For at bruge Memory Graph -værktøjet skal du køre din MVVMCross -applikation i Xcode og navigere gennem dens kerne strømme. Tag hukommelsesnapshots på forskellige punkter, især efter at have navigeret væk fra visninger eller visningsmodeller, der skal forhandles.

2. Analyse af snapshots: I Memory Graph Debugger viser venstre panel alle objekter i øjeblikket i hukommelsen sammen med deres forekomsttællinger. Se efter objekter, der burde have været omlokeret, men er stadig til stede. En stigning i antallet af forekomster af en klasse over tid kan indikere en tilbageholdelsescyklus.

3. Identificering af fastholdelsescyklusser: Vælg et objekt i venstre panel for at se dets objektgraf. Grafen viser referencerne, der holder objektet i hukommelsen. Fed linjer indikerer stærke referencer, mens lysegrå linjer indikerer ukendte referencer (som kan være svage eller stærke). Hvis du ser en løkke, hvor genstande henviser til hinanden stærkt, er det sandsynligvis en fastholdelsescyklus.

4. Rettelse af fastholdelsescyklusser: Når du først har identificeret en fastholdelsescyklus, skal du gennemgå din kode for at finde, hvor de stærke referencer oprettes. Ofte involverer dette at ændre stærke referencer til svage referencer, især i delegerede eller lukninger.

Anvendelse til MVVMCross

I MVVMCROSS -applikationer er visningsmodeller tæt koblet til livscyklussen. Dette kan undertiden føre til beholdningscyklusser, hvis de ikke styres korrekt. For eksempel, hvis en visningsmodel har en stærk henvisning til en visning, og udsigten har også en stærk henvisning til visningsmodellen (måske gennem en binding), kan en fastholdelsescyklus forekomme.

For at undgå dette i MVVMCROSS skal du sikre dig, at eventuelle referencer fra synspunkter for at se modeller er svage. Brug livscyklusmetoder leveret af MVVMCROSS (som 'forsvandt') til at rydde op i eventuelle stærke referencer, når synspunkter afvises. Brug desuden hukommelsesgrafværktøjet til at verificere, at visningsmodeller forhandles korrekt, når deres tilknyttede visninger fjernes fra navigationsstakken.

Eksempel på at identificere beholdningscyklusser i MVVMCross

Antag, at du har en 'myviewmodel', der er bundet til en 'myview'. Hvis 'MyView` har en stærk henvisning til' MyViewModel ', og' MyViewModel 'også har en stærk henvisning til' MyView '(måske gennem en delegeret eller en lukning), ville du se begge genstande tilbage i hukommelsen, selv efter at have navigeret væk fra' MyView '. Ved hjælp af hukommelsesgrafværktøjet identificerer du denne cyklus og ændrer derefter din kode til at bruge svage referencer, hvor det er nødvendigt.

Ved at følge disse trin og ved hjælp af hukommelsesgrafværktøjet kan du effektivt identificere og løse opbevare cyklusser i MVVMCROSS -applikationer, hvilket sikrer, at din apps hukommelsesforbrug forbliver effektiv og stabil.

Citater:
[Jeg
)
[3] https://www.tothenew.com/blog/memory-leak-with-memory-graph-debugger/
[4] https://paul-samuels.com/blog/2018/11/20/unit-test-----etain-cycles/
[5] https://www.mvvmcross.com/mvvmcross-5-release/
)
[7] https://www.donnywals.com/using-xcodes-memory-graph-to-find-memory-leaks/
[8] https://www.mvvmcross.com/mvvmcross-6.0.0-release/
)