Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan bruger jeg Memory Graph Debugger til at identificere fastholdelsescyklusser i MVVMCROSS -applikationer


Hvordan bruger jeg Memory Graph Debugger til at identificere fastholdelsescyklusser i MVVMCROSS -applikationer


Brug af hukommelsesgraf -debugger i Xcode er en effektiv måde at identificere fastholdelsescyklusser i MVVMCROSS -applikationer. Her er en trinvis vejledning til, hvordan man gør det:

Introduktion til Memory Graph Debugger

Memory Graph Debugger er et kraftfuldt værktøj i Xcode, der hjælper udviklere med at identificere hukommelseslækager og bevare cyklusser ved at visualisere objektforhold i hukommelsen. Det giver et øjebliksbillede af den aktuelle hukommelsestilstand, der viser, hvilke objekter der bevares, og hvordan de henvises til.

Trin for at identificere fastholdelsescyklusser

1. Kør din app: Start med at køre din MVVMCROSS -applikation i Xcode. Sørg for, at du tester den specifikke del af appen, hvor du har mistanke om, at der kan opstå en beholdningscyklus.

2. Åbn Memory Graph Debugger: Når din app kører, skal du åbne Memory Graph Debugger ved at klikke på knappen Tre-node, der er placeret mellem den visuelle debugger og placeringssimulatorknapper i Xcodes værktøjslinje. Dette vil fange et hukommelsesbillede af din apps nuværende tilstand.

3. Analyser hukommelses -snapshot: I det venstre panel af Memory Graph Debugger vil du se en liste over objekter, der i øjeblikket er i hukommelsen sammen med antallet af forekomster af hver klasse. Se efter objekter, der ikke burde være der, eller som har et uventet stort antal tilfælde.

4. Identificer Behold Cycles: Vælg et objekt fra det venstre panel for at se dets referencegraf. Grafen viser stærke referencer som dristige linjer og ukendte referencer (som kan være svage eller stærke) som lysegrå linjer. En tilbageholdelsescyklus er indikeret af en løkke i grafen, hvor genstande refererer til hinanden på en måde, der forhindrer dem i at blive forhandlet.

5. Naviger objektgrafer: For at spore kilden til en fastholdelsescyklus skal du muligvis navigere gennem flere objektgrafer. Start med det lækkede objekt, og følg referencerne bagud for at finde det overordnede objekt, der bevarer det.

6. Kontroller objektdetaljer: Når du klikker på en knude i grafen, giver et inspektionspanel detaljerede oplysninger om objektet, inklusive dets egenskaber og forhold. Dette kan hjælpe dig med at forstå, hvorfor et objekt bevares.

7. Gentag kernetrømme: For at bekræfte en fastholdelsescyklus skal du gentage kerneflowet eller funktionen i din app flere gange og tage hukommelsesbilleder efter hver iteration. Hvis antallet af forekomster af et bestemt objekt stiger over tid, kan det indikere en fastholdelsescyklus.

8. Fix beholdningscyklussen: Når du først har identificeret kilden til fastholdelsescyklussen, kan du løse den ved at ændre stærke referencer til svage eller ikke -kendte referencer, hvor det er relevant. Brug for eksempel i lukninger `[svagt selv]` for at undgå at fange 'selv' stærkt.

Almindelige beholdningscyklusscenarier i MVVMCross

I MVVMCROSS -applikationer forekommer opbevaring af cyklusser ofte på grund af stærke referencer mellem visningsmodeller og synspunkter eller på grund af lukninger, der fanger visningsmodeller eller synspunkter stærkt. For eksempel, hvis en visningsmodel har en stærk henvisning til en visning, og visningen også har en stærk henvisning til visningsmodellen, kan heller ikke blive forhandlet.

For at forhindre sådanne cyklusser skal du sikre dig, at dine synsmodeller renses korrekt, når synspunkter afvises. Brug livscyklusmetoder leveret af MVVMCross, såsom `forsvandt ()`, til at frigive ressourcer og bryde eventuelle unødvendige referencer.

Ved at følge disse trin og forstå, hvordan objektforhold visualiseres i Memory Graph Debugger, kan du effektivt identificere og rette opholdscyklusser i dine MVVMCROSS -applikationer.

Citater:
[Jeg
)
[3] https://www.tothenew.com/blog/memory-leak-with-memory-graph-debugger/
[4] https://forums.developer.apple.com/forums/thread/112268
[5] https://www.mvvmcross.com/mvvmcross-5-release/
[6] https://www.donnywals.com/using-xcodes-memory-graph-to-find-memory-leaks/
[7] https://moldstud.com/articles/p-swift-memory-management-tips-for-retain-cycle-suesues
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9] https://digginginthecode.wordpress.com/2016/06/14/xamarin-performance-advices/