Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuinka käytän muistikaavion virheenkorjainta tunnistamaan syklit MVVMCross -sovelluksissa


Kuinka käytän muistikaavion virheenkorjainta tunnistamaan syklit MVVMCross -sovelluksissa


Muistikaavion virheenkorjaimen käyttäminen XCODE: ssä on tehokas tapa tunnistaa syklit MVVMCross -sovelluksissa. Tässä on vaiheittainen opas sen tekemiseen:

Johdanto muistikaavion virheenkorjaukseen

Muistikaavion virheenkorjaus on tehokas Xcode -työkalu, joka auttaa kehittäjiä tunnistamaan muistivuodot ja säilyttämään syklit visualisoimalla objektisuhteet muistiin. Se tarjoaa tilannekuvan nykyisestä muistitilasta, joka osoittaa, mitkä esineet säilytetään ja miten niihin viitataan.

Vaiheet säilyttää syklit

1. Suorita sovelluksesi: Aloita suorittamalla MVVMCross -sovelluksesi Xcode -sovelluksessa. Varmista, että testaat sovelluksen tiettyä osaa, jossa epäilet, että säilytysjakso voi tapahtua.

2. Avaa muistikaavion virheenkorjaus: Kun sovelluksesi on käynnissä, avaa muistikaavion virheenkorjaus napsauttamalla Visual Debuggerin ja sijaintimulaattorin painikkeiden välissä olevaa kolmen solmu-painiketta Xcode-työkalurivillä. Tämä kaappaa muistin tilannekuvan sovelluksesi nykyisestä tilasta.

3. Analysoi muistin tilannekuva: Muistikaavion Debugger -sivun vasemmassa paneelissa näet luettelon tällä hetkellä muistissa olevista esineistä sekä kunkin luokan esiintymien lukumäärän. Etsi esineitä, joiden ei pitäisi olla siellä tai joilla on odottamatta suuri määrä tapauksia.

4. Tunnista Sycles -syklit: Valitse objekti vasemmasta paneelista nähdäksesi sen referenssikaavion. Kaavio näyttää vahvat viitteet lihavoituina viivoina ja tuntemattomina viitteinä (jotka voivat olla heikkoja tai vahvoja) vaaleanharmaaksi viivoina. Sykliä on osoitettu graafin silmukka, jossa objektit viittaavat toisiinsa tavalla, joka estää niitä kaupankäynnistä.

5. navigoi objektikaavioissa: Jäljitä säilyttämisjakson lähde, saatat joutua liikkumaan useiden objektikaavioiden läpi. Aloita vuotaneella objektilla ja seuraa viitteitä taaksepäin löytääksesi sen säilyttävän vanhemman objektin.

6. Tarkasta objektin yksityiskohdat: Kun napsautat kaavion solmua, tarkastuspaneeli antaa yksityiskohtaisia ​​tietoja objektista, mukaan lukien sen ominaisuudet ja suhteet. Tämä voi auttaa sinua ymmärtämään, miksi esine säilytetään.

7. Toista ydinvirrat: Varmista, että säilytä sykli, toista core -virtaus tai ominaisuus sovelluksessasi useita kertoja ottaen muistin tilannekuvia jokaisen iteraation jälkeen. Jos tietyn esineen esiintymien lukumäärä kasvaa ajan myötä, se voi osoittaa säilytysjakson.

8. Korjaa säilytysjakso: Kun olet tunnistanut säilytysjakson lähteen, voit korjata sen muuttamalla tarvittaessa vahvoja viitteitä heikkoihin tai omistamattomiin viitteisiin. Käytä esimerkiksi sulkemisissa `[heikko itse]` `` itsen "vangitsemiseksi voimakkaasti.

Yleiset säilyttävät sykliskenaariot mvvmcrossissa

MVVMCross -sovelluksissa säilytysjaksot tapahtuvat usein View -mallien ja näkymien välisten vahvojen viittausten vuoksi tai sulkemismallien tai näkymien kaappaamisen vuoksi voimakkaasti. Esimerkiksi, jos näkymämallilla on vahva viittaus näkymään ja näkymässä on myös vahva viittaus näkymämalliin, sitä ei voida jakaa.

Varmista, että tällaiset sykli Käytä MVVMCrossin tarjoamia elinkaarimenetelmiä, kuten `kadonnut ()`, resurssien vapauttamiseksi ja tarpeettomien viitteiden katkaisemiseksi.

Noudattamalla näitä vaiheita ja ymmärtämällä, kuinka objektisuhteet visualisoidaan muistikaavion virheenkorjauksessa, voit tunnistaa ja korjata säilytysjaksot MVVMCross -sovelluksissasi.

Viittaukset:
[1] https://doordash.
.
[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-issues
[8] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[9] https://digginginthecode.wordpress.com/2016/06/14/xamarin-performance-advices/