Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ali se lahko instrumenti uporabljajo za sledenje puščanja pomnilnika v realnem času za aplikacije MVVMcross


Ali se lahko instrumenti uporabljajo za sledenje puščanja pomnilnika v realnem času za aplikacije MVVMcross


Instruments, del Xcode, so zasnovani predvsem za aplikacije za iOS, MacOS, WatchOS in TVOS. Medtem ko je neverjetno učinkovito za zaznavanje puščanja pomnilnika na teh platformah z uporabo orodij, kot sta instrument Leaks Instrument in pomnilniški graf, je njegova neposredna aplikacija za aplikacije MVVMcross omejena. MVVMcross je okvir med platformami, ki omogoča razvoj več platform, vključno z Androidom in iOS.

Če pa razvijate aplikacijo MVVMcross za iOS, lahko uporabite instrumente za sledenje puščanja pomnilnika v realnem času za del iOS vaše aplikacije. Tukaj: kako:

Uporaba instrumentov za iOS mvvmcross aplikacije

1. Zaženite instrumenti: Začnite z odpiranjem projekta v XCode in izberite izdelek> Profil. To bo sprožilo instrumente.

2. Izberite predlogo puščanja: V pogovornem oknu za izbiro predloge izberite predlogo puščanja pod razdelkom pomnilnika. Ta predloga je zasnovana posebej za zaznavanje puščanja pomnilnika.

3. Zaženite svojo aplikacijo: kliknite gumb za snemanje, da začnete profilirati svojo aplikacijo. Interakcijo s svojo aplikacijo, kot bi običajno, še posebej osredotočite se na področja, na katerih sumite, da se lahko pojavijo puščanje spomina.

4. Analizirajte rezultate: Ko končate svoje interakcije, ustavite snemanje. Instrumenti bodo prikazali graf, ki prikazuje porabo pomnilnika sčasoma. Če pride do uhajanja pomnilnika, boste opazili, da se poraba pomnilnika povečuje brez ustreznega zmanjšanja, ko je treba predmete obravnavati. Pod grafom boste našli seznam puščenih pomnilniških blokov, skupaj s sledi skladb, ki kažejo, kje so dodeljeni puščavi.

5. Prepoznajte in popravite puščanje: uporabite sledi sklada za iskanje vira puščanja v svoji kodi. Pogosta vprašanja vključujejo zadrževanje ciklov, pri katerih se predmeti med seboj močno sklicujejo, preprečujejo delo. Odpravljanje teh vključuje razbijanje zadržkov ciklov, pogosto z uporabo šibkih ali nezahtevnih referenc.

Omejitve za platforme, ki niso IOS

Za aplikacije MVVMcross, ki ciljajo na platforme, ki niso iOS (kot je Android), instrumentov ni mogoče neposredno uporabiti. Namesto tega bi morali za odkrivanje puščanja pomnilnika uporabiti orodja, specifična za platformo:

- Android: Uporabite orodja, kot je Android Studio's Memory Profiler ali knjižnice tretjih oseb, kot je LeakCanary.
- Druge platforme: Uporabite orodja za profiliranje pomnilnika ali knjižnice, specifična za platformo.

Če povzamemo, medtem ko so instrumenti zelo učinkoviti za odkrivanje puščanja pomnilnika v iOS aplikacijah, vključno s tistimi, zgrajenimi z MVVMcross za iOS, ne velja za platforme, ki niso IOS. Za razvoj med platformami morate uporabiti orodja, značilna za vsako ciljno platformo.

Navedbe:
[1] https://www.netguru.com/blog/what-are-ios-memory-leaks-and-how-to-detect-them
[2] https://www.reddit.com/r/rust/comments/kpsgin/how_to_find_a_memory_leak_in_a_rust_program/
[3] https://stackoverflow.com/questions/38592689/memory-leak-check-in-real-time-application
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-finding-memory-leaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-ecase-of-not-disposed-viewModels
[6] https://forums.ni.com/t5/labview/get-object-memory-leak/td-p/4276905
[7] https://forums.developer.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/isissue/2884