İzlenecek Yol - Apple'ın Araçları Aracını Kullanma
Bu makalede, Xamarin ile oluşturulan bir iOS uygulamasında bellek sorunlarını tanılamak için Apple'ın Araçları aracının nasıl kullanılacağı açık edilmiştir. Araçları başlatmayı, yığın anlık görüntülerini almayı ve bellek büyümesini analiz etme adımlarını gösterir. Ayrıca bellek sorununa neden olan kod satırlarını görüntülemek ve tam olarak saptamak için İzlemeler'in nasıl kullanılacağını gösterir.
Bu sayfada, bir iOS uygulamasındaki bir bellek sorununu tanılamak için Xcode'un Instruments aracının nasıl kullanılacağı gösterilmektedir.
Bellek Sorunlarını Tanılama
Mac için Visual Studio Araçlar Başlatma Araçları menü öğesinden Araçlar'ı> başlatın.
Cihaza Yüklemeyi Çalıştır > menü öğesini seçerek uygulamayı cihaza yükleyin.
Ayırmalar şablonunu seçin (beyaz kutulu turuncu simge)
Pencerenin üst kısmındaki Profil oluşturma şablonu seçin: listesinden Bellek Tanıtımı uygulamasını seçin. Yüklü uygulamaları gösteren menüyü genişletmek için önce iOS cihazına tıklayın.
İzlemeleri başlatmak için Seç düğmesine (pencerenin sağ alt kısmında) basın. ThiJs şablonu üst bölmede iki öğe gösterir: Ayırmalar ve VM İzleyicisi.
Uygulamayı başlatacak olan Araçlar'da Kaydet düğmesine (sol üstteki kırmızı daire) basın.
Üst bölmede VM İzleyici satırını seçin (artık uygulama çalıştığına göre iki bölüm içerecektir: Kirli ve Yerleşik Boyut). Denetçi bölmesinde, Ekran Ayarlar Göster seçeneğini (dişli simgesi) seçin ve ardından bu ekran görüntüsünün sağ alt kısmında gösterilen Otomatik Anlık Görüntü Oluşturma onay kutusunu işaretleyin:
Üst bölmede Ayırmalar satırını seçin (artık uygulama çalıştığına göre, Tüm Yığın ve Anonim VM'ler olarak gösterilir)
Denetçi bölmesinde, Ekranı Göster Ayarlar seçeneğini (dişli simgesi) seçin ve ardından bir taban çizgisi oluşturmak için Nesli İşaretle düğmesine tıklayın. Pencerenin üst kısmındaki zaman çizelgesinde küçük bir kırmızı bayrak görünür
Uygulamayı kaydırın, sonra Yeniden Nesli İşaretle'yi seçin (birkaç kez tekrarlayın)
Durdur düğmesine tıklayın.
En büyük Büyüme ile Oluşturma düğümünü genişletin ve Büyümeye (azalan) göre sıralayın.
Denetçi bölmesini, Yığın İzlemeyi gösteren Genişletilmiş Ayrıntıyı Göster ("E") olarak değiştirin.
Nesne> olmayan düğümün <aşırı bellek büyümesi gösterdiğine dikkat edin. Diğer ayrıntıları görmek için bu düğümün yanındaki oka tıklayın. Bölmeye Kaynak Konumu eklemek için yığın izlemesine sağ tıklayın:
Boyuta göre sıralayın ve Genişletilmiş Ayrıntı görünümünü görüntüleyin:
İlgili kodu görmek için çağrı yığınında istenen girişe tıklayın:
Bu durumda, yeni bir görüntü oluşturulur ve her hücre için bir koleksiyonda depolanır ve mevcut koleksiyon görünümü hücreleri yeniden kullanılmaz.
Bellek Sorunlarını Çözme
Bu sorunları çözmek ve instruments aracılığıyla uygulamayı yeniden çalıştırmak mümkündür.
Sınıf düzeyinde tek bir örnek bildirilerek, görüntü yeniden kullanılabilir ve hücre nesnesi, aşağıda gösterildiği gibi her seferinde oluşturulmak yerine mevcut bir havuzdan yeniden kullanılabilir:
public override UICollectionViewCell GetCell (UICollectionView collectionView, NSIndexPath indexPath)
{
// Dequeue a cell from the reuse pool
var imageCell = (ImageCell)collectionView.DequeueReusableCell (cellId, indexPath);
// Reuse the image declared at the class level
imageCell.ImageView.Image = image;
return imageCell;
}
Artık uygulama çalıştırıldığında bellek kullanımı büyük ölçüde azalır. Nesiller arasındaki büyüme artık kodu düzeltmeden önce olduğu gibi MiB (megabayt) yerine Kib (kilobayt) cinsinden ölçülür:
Xamarin.iOS Çöp Toplama makalesi, Xamarin.iOS ile ilgili bellek sorunlarıyla ilgilenmek için yararlı bir başvurudur.
Özet
Bu makalede, bellek sorunlarını tanılamak için İzlemeler'in nasıl kullanılacağı gösterilmiştir. Mac için Visual Studio içinden araçları başlatma, bellek ayırma şablonunu yükleme ve bellek sorunlarını saptamak için anlık görüntüleri kullanma adımları açıklanmıştır. Son olarak, sorunun düzeltildiğini doğrulamak için uygulama yeniden incelendi.