A memória gráf hibakereső használata az Xcode -ban hatékony módszer a megtartási ciklusok azonosítására az MVVMCross alkalmazásokban. Itt van egy lépésről lépésre történő útmutató, hogyan kell csinálni:
Bevezetés a memória grafikon hibakeresőjébe
A memória grafikon hibakereső egy hatékony eszköz az Xcode -ban, amely segít a fejlesztőknek a memória szivárgásainak azonosításában és a ciklusok megtartásával az objektumkapcsolatok memóriában történő megjelenítésével. Pillanatképet biztosít az aktuális memóriaállapotról, megmutatva, hogy mely objektumokat tartják fenn, és hogyan hivatkoznak.
Lépések a ciklusok megőrzéséhez
1. Futtassa az alkalmazást: Kezdje az MVVMCross alkalmazás Xcode -ban történő futtatásával. Győződjön meg arról, hogy teszteli az alkalmazás adott részét, ahol gyanítja, hogy megtartási ciklus fordulhat elő.
2. Nyissa meg a memória grafikon hibakeresőjét: Amint az alkalmazás fut, nyissa meg a Memória Grafikon hibakeresőjét a Visual Debugger és a Location Simulator gombok közötti három csomópont gombra kattintva. Ez rögzíti az alkalmazás jelenlegi állapotának memória pillanatképét.
3. Elemezze a memória pillanatképét: A memória gráf hibakereső bal oldali panelen látható a memóriában lévő objektumok listája, valamint az egyes osztályok példányának száma. Keressen olyan tárgyakat, amelyeknek nem szabad ott lenniük, vagy amelyek váratlanul nagy számú példányt tartalmaznak.
4. Azonosítsa a megtartási ciklusokat: Válasszon egy objektumot a bal oldali panelen a referencia grafikon megtekintéséhez. A grafikon erős referenciákat fog mutatni, mint félkövér vonalak és ismeretlen referenciák (amelyek gyenge vagy erősek lehetnek) világosszürke vonalakként. A megtartási ciklust a grafikonon lévő hurok jelzi, ahol az objektumok oly módon hivatkoznak, hogy megakadályozzák őket az üzlethelyzetben.
5. Navigáljon az Objektum grafikonjain: A megtartási ciklus forrásának nyomon követéséhez előfordulhat, hogy navigálnia kell több objektumgrafikonon. Kezdje a kiszivárgott objektummal, és kövesse a referenciákat hátra, hogy megtalálja azt a szülőobjektumot, amely megtartja azt.
6. Ellenőrizze az objektum részleteit: Amikor a grafikonon egy csomópontra kattint, az ellenőrző panel részletes információkat nyújt az objektumról, beleértve annak tulajdonságait és kapcsolatait. Ez segíthet megérteni, hogy miért tartja meg egy tárgyat.
7. Ismételje meg a magáramlásokat: A megtartási ciklus megerősítéséhez ismételje meg az alkalmazás alapját vagy funkcióját többször, minden iteráció után memória pillanatképeket készít. Ha egy adott objektum példányainak száma az idő múlásával növekszik, akkor ez jelezheti a megtartási ciklust.
8. Javítsa meg a megtartási ciklust: Miután azonosította a megtartási ciklus forrását, javíthatja azt, ha adott esetben a gyenge vagy a nem megfelelő referenciákra való erős hivatkozásokat változtatja meg. Például a bezárások során használja a „[gyenge én]` `-t az„ önmagának `önmagának` önálló elfogásának elkerülése érdekében.
Közös megtartja a ciklus forgatókönyveit az mvvmcross -ban
Az MVVMCross alkalmazásokban a megtartási ciklusok gyakran fordulnak elő a nézetmodellek és a nézetek közötti erős hivatkozások miatt, vagy a bezárások miatt, amelyek a nézetmodellek vagy a nézetek erősen rögzítik. Például, ha egy nézetmodell határozottan hivatkozik a nézetre, és a nézet erősen utal a nézetmodellre, akkor egyiket sem lehet megbeszélni.
Az ilyen ciklusok elkerülése érdekében ellenőrizze, hogy a nézet modelljeit megfelelően megtisztítsák, amikor a nézeteket elutasítják. Használjon életciklus -módszereket, amelyeket az MVVMCross biztosított, mint például a „eltűnt ()”, az erőforrások felszabadításához és a felesleges referenciák megszakításához.
Ezeknek a lépéseknek a követésével és az objektumkapcsolatok megjelenítésének megértésével a memória gráf hibakeresője során hatékonyan azonosíthatja és rögzítheti a megtartási ciklusokat az MVVMCross alkalmazásokban.
Idézetek:[1] https://doordash.engineering/2019/05/22/ios-memory-leaks-and--reain-cycle-detection-using-xcodes-memory-graph-debugger/
[2] https://careersatdoordash.com/blog/ios-memory-leaks-and--reain-cycle-detection-using-xcodes-memory-graph-debugger/
[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-rease/
[6] https://www.donnywals.com/using-xcodes-memory-graph-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/