Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā es varu izmantot atmiņas diagrammas atkļūdotāju, lai identificētu saglabāšanas ciklus MVVMCross lietojumprogrammās


Kā es varu izmantot atmiņas diagrammas atkļūdotāju, lai identificētu saglabāšanas ciklus MVVMCross lietojumprogrammās


Atmiņas grafika atkļūdotāja izmantošana Xcode ir efektīvs veids, kā noteikt saglabāšanas ciklus MVVMCross lietojumprogrammās. Šeit ir soli pa solim ceļvedis, kā to izdarīt:

Ievads atmiņas diagrammas atkļūdotājs

Atmiņas grafika atkļūdotājs ir spēcīgs Xcode rīks, kas palīdz izstrādātājiem identificēt atmiņas noplūdes un saglabāt ciklus, vizualizējot objekta attiecības atmiņā. Tas nodrošina pašreizējā atmiņas stāvokļa momentuzņēmumu, parādot, kuri objekti tiek saglabāti un kā uz tiem atsaucas.

Soles, lai identificētu saglabāšanas ciklus

1. Palaidiet savu lietotni: sāciet, palaižot MVVMCROSS lietojumprogrammu Xcode. Pārliecinieties, ka jūs pārbaudāt konkrēto lietotnes daļu, kurā jums ir aizdomas, ka varētu notikt saglabāšanas cikls.

2. Atveriet atmiņas diagrammas atkļūdotāju: Kad jūsu lietotne darbojas, atveriet atmiņas diagrammas atkļūdotāju, noklikšķinot uz pogas Trīsmezgls starp vizuālo atkļūdotāju un atrašanās vietas simulatora pogām Xcode rīkjoslā. Tas uztvers jūsu lietotnes pašreizējā stāvokļa atmiņas momentuzņēmumu.

3. Analizējiet atmiņas momentuzņēmumu: Atmiņas grafika atkļūdotāja kreisajā panelī jūs redzēsit atmiņā esošo objektu sarakstu, kā arī katras klases gadījumu skaitu. Meklējiet objektus, kuriem nevajadzētu tur atrasties vai kuriem ir negaidīti liels gadījumu skaits.

4. Identificējiet saglabāšanas ciklus: no kreisā paneļa atlasiet objektu, lai apskatītu tā atsauces grafiku. Grafikā parādīs spēcīgas atsauces kā treknrakstā līnijas un nezināmas atsauces (kas varētu būt vājas vai spēcīgas) kā gaiši pelēkas līnijas. Saglabāšanas ciklu norāda diagrammā cilpa, kur objekti atsaucas viens uz otru tādā veidā, kas neļauj to novērst.

5. Pārvietojieties objektu diagrammas: lai izsekotu saglabāšanas cikla avotu, jums, iespējams, būs jāpārvietojas pa vairākiem objektu grafikiem. Sāciet ar noplūdušo objektu un sekojiet atsaucēm atpakaļ, lai atrastu vecāku objektu, kas to saglabā.

6. Pārbaudiet objekta informāciju: Diagrammā noklikšķinot uz mezgla, inspekcijas panelis sniegs detalizētu informāciju par objektu, ieskaitot tā īpašības un attiecības. Tas var palīdzēt jums saprast, kāpēc objekts tiek saglabāts.

7. Atkārtojiet serdes plūsmas: lai apstiprinātu saglabāšanas ciklu, vairākas reizes atkārtojiet serdes plūsmu vai funkciju savā lietotnē, pēc katras iterācijas paņemot atmiņas momentuzņēmumus. Ja laika gaitā palielinās konkrēta objekta gadījumu skaits, tas varētu norādīt uz saglabāšanas ciklu.

8. Fiksējiet saglabāšanas ciklu: Kad esat identificējis saglabāšanas cikla avotu, varat to salabot, vajadzības gadījumā mainot spēcīgas atsauces uz vājām vai nepiederīgām atsaucēm. Piemēram, slēgšanā izmantojiet `[vāju sevi], lai stingri notvertu` sevis.

parastais saglabāšanas cikla scenāriji mvvmcross

MVVMCROSS lietojumprogrammās saglabāt ciklus bieži rodas spēcīgu atsauces starp skatu modeļiem un skatiem vai slēgšanas dēļ, kas uztver skatu modeļus vai stingri skatus. Piemēram, ja skata modelim ir izteikta atsauce uz skatu un skats arī satur spēcīgu atsauci uz skata modeli, nevar arī tikt galā.

Lai novērstu šādus ciklus, pārliecinieties, ka jūsu skata modeļi tiek pareizi sakopti, kad tiek noraidīti skati. Izmantojiet dzīves cikla metodes, kuras nodrošina MVVMCROSS, piemēram, `pazuda ()`, lai atbrīvotu resursus un salauztu nevajadzīgas atsauces.

Veicot šīs darbības un izprotot, kā objektu attiecības tiek vizualizētas atmiņas diagrammas atkļūdotājā, varat efektīvi identificēt un noteikt saglabāšanas ciklus savās MVVMCross lietojumprogrammās.

Atsauces:
[1.]
[2] https://careersatdoordash.com/blog/ios-memory-leaks-and-retain-cycle-decection-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-Release/
[6] https://www.donnywals.com/using-xcodes-memory-graph-to-find-memory-liaks/
[7] https://moldstud.com/articles/p-swift-memory-management-tips-for-netain-cycle-isues
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9] https://digginginthecode.wordpress.com/2016/06/14/xamarin-performance-advices/