Xcode'un bir parçası olan enstrümanlar öncelikle iOS, macOS, WatchoS ve TVOS uygulamaları için tasarlanmıştır. Sızıntı enstrümanı ve bellek grafiği hata ayıklayıcısı gibi araçları kullanarak bu platformlardaki bellek sızıntılarını tespit etmek için inanılmaz derecede etkili olsa da, MVVMCross uygulamalarına doğrudan uygulaması sınırlıdır. MVVMCross, Android ve iOS dahil olmak üzere birden fazla platform için geliştirme sağlayan platformlar arası bir çerçevedir.
Ancak, iOS için bir MVVMCross uygulaması geliştiriyorsanız, uygulamanızın iOS kısmı için hafıza sızıntılarını gerçek zamanlı olarak izlemek için enstrümanları kullanabilirsiniz. İşte nasıl:
iOS mvvmcross uygulamaları için enstrümanları kullanma
1. Başlattı Enstrümanları: Projenizi Xcode'da açarak ve Ürün> Profil'i seçerek başlayın. Bu enstrümanları başlatacak.
2. Sızıntı şablonunu seçin: Şablon Seçimi iletişim kutusunda, bellek bölümünün altındaki sızıntı şablonunu seçin. Bu şablon, bellek sızıntılarını algılamak için özel olarak tasarlanmıştır.
3. Uygulamanızı çalıştırın: Uygulamanızı profillemeye başlamak için Kayıt düğmesine tıklayın. Uygulamanızla normal olarak etkileşim kurun, özellikle de bellek sızıntılarının meydana gelebileceğinden şüphelendiğiniz alanlara odaklanın.
4. Sonuçları analiz edin: Etkileşimlerinizi tamamladıktan sonra kaydı durdurun. Enstrümanlar, zaman içinde bellek kullanımını gösteren bir grafik görüntüleyecektir. Bellek sızıntıları varsa, nesneler dağıtılması gerektiğinde karşılık gelen azalmadan bellek kullanımının arttığını göreceksiniz. Grafiğin altında, sızıntıların nereye tahsis edildiğini gösteren yığın izleri ile birlikte sızdırılmış bellek bloklarının bir listesini bulacaksınız.
5. Sızıntıları tanımlayın ve düzeltin: Kodunuzdaki sızıntıların kaynağını bulmak için yığın izlerini kullanın. Yaygın sorunlar arasında, nesnelerin birbirlerine güçlü referanslar tuttuğu ve gidermeyi önlediği döngüleri koruma döngüleri içerir. Bunları düzeltmek, genellikle zayıf veya sahipsiz referanslar kullanarak tutma döngülerini kırmayı içerir.
DIS olmayan platformlar için sınırlamalar
MVVMCross uygulamaları için iOS (Android gibi) dışındaki platformları hedefleyen enstrümanlar doğrudan kullanılamaz. Bunun yerine, bellek sızıntısı algılama için platforma özgü araçları kullanmanız gerekir:
- Android: Android Studio'nun bellek profili gibi araçları veya LeakCanary gibi üçüncü taraf kütüphaneleri kullanın.
- Diğer platformlar: Platforma özgü bellek profil oluşturma araçlarını veya kütüphanelerini kullanın.
Özetle, enstrümanlar iOS uygulamalarında iOS için MVVMCross ile inşa edilenler de dahil olmak üzere iOS uygulamalarındaki bellek sızıntılarını tespit etmek için oldukça etkili olsa da, IS olmayan platformlar için geçerli değildir. Platformlar arası geliştirme için, her hedef platforma özgü araçlar kullanmanız gerekir.
Alıntılar:[1] https://www.netguru.com/blog/what-are-ios-Memory-leaks-and-detect-the-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-ppleation
[4] https://www.kodeco.com/books/swiftui-mookbook/v1.0/chapters/9-finding-memory-leaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-lomory-leak-basuse-of-not-sisposed-viewmodels
[6] https://forums.ni.com/t5/labview/get-orgject-Memory-leak/td-p/4276905
[7] https://forums.eveloper.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/issues/2884