Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross Uygulamalarında Tutma Döngülerini Tanımlamak İçin Bellek Grafiği Hata Ayıklayıcısını Nasıl Kullanırım


MVVMCross Uygulamalarında Tutma Döngülerini Tanımlamak İçin Bellek Grafiği Hata Ayıklayıcısını Nasıl Kullanırım


Xcode'da bellek grafiği hata ayıklayıcısının kullanılması, MVVMCross uygulamalarındaki döngüleri tanımlamanın etkili bir yoludur. İşte nasıl yapılacağına dair adım adım bir kılavuz:

Bellek grafiği hata ayıklayıcısına giriş

Bellek grafiği hata ayıklayıcısı, Xcode'da geliştiricilerin bellek sızıntılarını tanımlamasına ve bellekteki nesne ilişkilerini görselleştirerek döngüleri korumasına yardımcı olan güçlü bir araçtır. Hangi nesnelerin korunduğunu ve bunların nasıl referans alındığını gösteren geçerli bellek durumunun bir anlık görüntüsünü sağlar.

Tutma döngülerini tanımlamak için adımlar

1. Uygulamanızı çalıştırın: MVVMCross uygulamanızı Xcode'da çalıştırarak başlayın. Uygulamanın bir tutma döngüsünün oluşabileceğinden şüphelendiğiniz belirli kısmını test ettiğinizden emin olun.

2. Bellek grafiği hata ayıklayıcısını açın: Uygulamanız çalıştıktan sonra, Xcode'un araç çubuğundaki görsel hata ayıklayıcı ve konum simülatör düğmeleri arasındaki üç düğüm düğmesine tıklayarak bellek grafiği hata ayıklayıcısını açın. Bu, uygulamanızın mevcut durumunun bir bellek anlık görüntüsünü yakalayacaktır.

3. Bellek anlık görüntüsünü analiz edin: Bellek grafiği hata ayıklayıcısının sol panelinde, şu anda bellekte nesnelerin bir listesini ve her sınıfın örneklerinin sayısını göreceksiniz. Orada olmaması veya beklenmedik derecede yüksek sayıda örneği olan nesneleri arayın.

4. Tutma döngülerini tanımlayın: Referans grafiğini görüntülemek için sol panelden bir nesne seçin. Grafik, cesur çizgiler ve bilinmeyen referanslar (zayıf veya güçlü olabilir) açık gri çizgiler olarak güçlü referanslar gösterecektir. Bir tutma döngüsü, nesnelerin birbirlerine verilmesini önleyecek şekilde birbirine atıfta bulunduğu grafikteki bir döngü ile gösterilir.

5. Sızan nesneyle başlayın ve onu tutan üst nesneyi bulmak için referansları geriye doğru izleyin.

6. Nesne ayrıntılarını inceleyin: Grafikteki bir düğümü tıkladığınızda, bir denetim paneli, özellikleri ve ilişkileri de dahil olmak üzere nesne hakkında ayrıntılı bilgi sağlayacaktır. Bu, bir nesnenin neden korunduğunu anlamanıza yardımcı olabilir.

7. Çekirdek akışlarını tekrarlayın: Bir tutma döngüsünü onaylamak için, her yinelemeden sonra bellek anlık görüntüleri alarak uygulamanızdaki çekirdek akışını veya özelliği birkaç kez tekrarlayın. Belirli bir nesnenin örnek sayısı zaman içinde artarsa, bir tutma döngüsünü gösterebilir.

8. Tutma döngüsünü düzeltin: Tutma döngüsünün kaynağını belirledikten sonra, uygun olduğunda zayıf veya sahipsiz referanslara güçlü referansları değiştirerek düzeltebilirsiniz. Örneğin, kapanışlarda, kendiliğinden `` kendini yakalamaktan kaçınmak için `[zayıf benlik] 'kullanın.

MVVMCROSS'DA YAZILILIR DÖNÜŞ ETKİLİ

MVVMCross uygulamalarında, tutma döngüleri genellikle görünüm modelleri ve görünümler arasındaki güçlü referanslar veya görünüm modellerini veya görünümlerini güçlü bir şekilde yakalayan kapanışlar nedeniyle ortaya çıkar. Örneğin, bir görünüm modeli bir görünüme güçlü bir referans tutarsa ​​ve görünüm de görünüm modeline güçlü bir referans tutarsa, her ikisi de dağıtılamaz.

Bu tür döngüleri önlemek için, görünümler göz ardı edildiğinde görüş modellerinizin uygun şekilde temizlendiğinden emin olun. Kaynakları serbest bırakmak ve gereksiz referansları kırmak için MVVMCross tarafından sağlanan yaşam döngüsü yöntemlerini kullanın.

Bu adımları izleyerek ve bellek grafiği hata ayıklayıcısında nesne ilişkilerinin nasıl görselleştirildiğini anlayarak, mvvmcross uygulamalarınızdaki tutma döngülerini etkili bir şekilde tanımlayabilir ve düzeltebilirsiniz.

Alıntılar:
[1] https://doordash.engineering/2019/05/22/ios-mould-leaks-and-seain-cycle-detection-using-xcodes-Memory-graph-debugger/
[2] https://careersatdoordash.com/blog/ios-mory-reaks-and-re-teain-cycle-detection-using-ususing-ususing-ususing-ususing-ususing-ususing-susing
[3] https://www.tothenew.com/blog/memory-leak-with-graph-debugger/
[4] https://forums.eveloper.apple.com/forums/thread/112268
[5] https://www.mvvmcross.com/mvvmcross-5-reelease/
[6] https://www.donnywals.com/using-xcodes
[7] https://moldstud.com/articles/p-swift-lemory-management-tips-for-redenain-cycle-issues
[8] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[9] https://digginginthecode.wordpress.com/2016/06/14/xamarin-opormance-advices/