Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kas mälugraafi tööriist aitab tuvastada MVVMCrossi rakendustes hoidmistsüklit


Kas mälugraafi tööriist aitab tuvastada MVVMCrossi rakendustes hoidmistsüklit


Jah, XCode'i mälugraafik tööriist aitab tuvastada MVVMCrossi rakendustes hoidmistsüklit. Siit saate teada, kuidas see töötab ja kuidas seda saab kasutada MVVMCROSS -i jaoks:

STUNTEN Tsüklite mõistmine

Kinni tsüklid toimuvad siis, kui kahel või enam objektil on üksteisele tugevad viited, takistades neid mälust käsitlemist. See on iOS -i arendamisel tavaline probleem, eriti delegaatide või sulgurite kasutamisel, mis jäädvustavad objekte tugevalt.

Mälugraafi tööriista kasutamine

1. rakenduse käitamine ja hetktõmmiste tegemine: kasutage mälugraafi tööriista MVVMCROSS -i rakendust XCode'is ja navigeerige selle põhivoogude kaudu. Tehke mälu hetktõmmised erinevates punktides, eriti pärast vaadete või vaatemudelite eemaldumist, mida tuleks käsitleda.

2. hetktõmmiste analüüsimine: mälugraafiku siluris kuvatakse vasakpoolne paneel kõik praegu mälus olevad objektid koos nende eksemplaride arvuga. Otsige objekte, mida oleks tulnud käsitleda, kuid mis on endiselt kohal. Klassi esinemisjuhtude arvu suurenemine aja jooksul võib viidata hoidmistsüklile.

3. Kinnitustsüklite tuvastamine: valige objekti graafiku vaatamiseks vasakul paneelil objekt. Graafik näitab viiteid, mis hoiavad objekti mälus. Paks jooned tähistavad tugevaid viiteid, helehallid aga näitavad tundmatuid viiteid (mis võivad olla nõrgad või tugevad). Kui näete silmust, kus objektid viitavad üksteisele tugevalt, on see tõenäoliselt hoidmistsükkel.

4. Kinnitamistsüklite kinnitamine: kui olete kinni hoidmistsükli tuvastanud, vaadake oma kood üle, et leida, kus tugevad viited luuakse. Sageli hõlmab see tugevate viidete muutumist nõrkadele viidetele, eriti delegaatide või sulgemise korral.

MVVMCROSSile kandideerimine

MVVMCROSS -i rakendustes on vaatemudelid tihedalt seotud vaadete elutsükliga. See võib mõnikord viia tsüklite säilitamiseni, kui seda ei hallata korralikult. Näiteks kui vaatemudelil on tugev viide vaatele ja vaade on ka tugev viide vaatemudelile (võib -olla sidumise kaudu), võib tekkida kinnipeetud tsükkel.

Selle vältimiseks MVVMcrossis veenduge, et kõik viited vaadetele vaatamise mudelitele on nõrgad. Kasutage MVVMCROSSi pakutavaid elutsüklimeetodeid (nagu "kadunud"), et puhastada vaated. Lisaks kasutage mälugraafi tööriista, et kontrollida, kas vaatemudeleid lokeldatakse õigesti, kui nendega seotud vaated eemaldatakse navigeerimispakist.

MVVMCROSS -i säilitamistsüklite tuvastamise näide

Oletame, et teil on `myViewModel`, mis on seotud` myView'iga. Kui `myView` omab tugevat viidet` myViewModel 'ja `myViewModel` omab ka tugevat viidet" Myview "(võib -olla delegaadi või sulgemise kaudu), näeksite mõlemat objekti, mis jäävad mällu isegi pärast" MyView "eemal viibimist. Mälugraafiku tööriista abil tuvastaksite selle tsükli ja muudaksite oma koodi vajadusel nõrkade viitete kasutamiseks.

Neid samme jälgides ja mälugraafiku tööriista abil saate MVVMCrossi rakendustes tõhusalt tuvastada ja lahendada, tagades, et teie rakenduse mälu kasutamine püsib tõhusaks ja stabiilseks.

Tsitaadid:
]
]
[3] https://www.tothenew.com/blog/memory-leak-with-memory-graph-debugger/
[4] https://paul-samuels.com/blog/2018/11/20/unit-testing-retain-cycles/
[5] https://www.mvvmcross.com/mvvmcross-5-release/
]
]
[8] https://www.mvvmcross.com/mvvmcross-6.0.0-release/
]