.NET Nesne Ayırma aracını kullanarak bellek kullanımını analiz etme

.NET Nesne Ayırma aracını kullanarak uygulamanızın ne kadar bellek kullandığını ve hangi kod yollarının en çok bellek ayırdığı görebilirsiniz.

Aracı çalıştırdıktan sonra, nesnelerin ayrıldığı işlev yürütme yollarını görebilirsiniz. Daha sonra en fazla belleği alan çağrı ağacının köküne kadar izleyebilirsiniz.

.NET Nesne Ayırma aracını kullanarak performansı iyileştirmeyi gösteren bir öğretici için bkz . Örnek olay incelemesi: Kodu iyileştirmeye yönelik başlangıç kılavuzu.

Ayarlama

  1. Visual Studio'da Performans Profili Oluşturucu'yu açmak için Alt+F2 tuşlarına basın.

  2. .NET Nesne Ayırma İzleme onay kutusunu seçin.

    Dotnet Nesne Ayırma İzleme aracının seçili ekran görüntüsü.

    Dotnet Nesne Ayırma İzleme aracının seçili ekran görüntüsü.

  3. Aracı çalıştırmak için Başlangıç düğmesini seçin.

    Profil oluşturucuyu başlatmadan önce Koleksiyonla başlat duraklatıldı seçeneğini etkinleştirirseniz, tanılama oturumu görünümünde Kayıt düğmesini seçene kadar veriler toplanmaz.

  4. Araç çalışmaya başladıktan sonra uygulamanızda profil oluşturmanızı istediğiniz senaryoyu inceleyin. Ardından verilerinizi görmek için Toplamayı durdur'u seçin veya uygulamanızı kapatın.

    Koleksiyonu durdur'u gösteren pencerenin ekran görüntüsü.

    Koleksiyonu durdur'u gösteren pencerenin ekran görüntüsü.

  5. Ayırma sekmesini seçin. Aşağıdakine benzer bellek ayırma verileri görüntülenir.

    Ayırma sekmesinin ekran görüntüsü.

    Ayırma sekmesinin ekran görüntüsü.

Artık nesnelerin bellek ayırmasını analiz edebilirsiniz.

Toplama sırasında izleme aracı profili oluşturulan uygulamayı yavaşlatabilir. İzleme aracının veya uygulamanın performansı yavaşsa ve her nesneyi izlemeniz gerekmiyorsa örnekleme hızını ayarlayabilirsiniz. Bunu yapmak için profil oluşturucu özet sayfasındaki izleme aracının yanındaki dişli simgesini seçin.

Dotnet Ayırma aracının ayarlarının ekran görüntüsü.

Dotnet Ayırma aracının ayarlarının ekran görüntüsü.

Örnekleme hızını istediğiniz hıza ayarlayın. Bu değişiklik, toplama ve analiz sırasında uygulamanızın performansını hızlandırmaya yardımcı olur.

Ayarlanmış örnekleme hızının ekran görüntüsü.

Ayarlanmış örnekleme hızının ekran görüntüsü.

Aracı daha verimli hale getirme hakkında daha fazla bilgi için bkz . Profil Oluşturucu ayarlarını iyileştirme.

Verilerinizi anlama

Aşağıdaki grafik görünümünde, en üstteki grafik uygulamanızdaki canlı nesnelerin sayısını gösterir. Nesne değişim grafiğinin alt kısmında uygulama nesnelerinin değişiklik yüzdesi gösterilir. Çöp toplamanın ne zaman gerçekleştiğini gösteren kırmızı çubuklar.

Dotnet Ayırma aracının grafiğinin ekran görüntüsü.

Dotnet Ayırma aracının grafiğinin ekran görüntüsü.

Bir zaman aralığı seçerek yalnızca belirli bir zaman aralığı için etkinliği görüntülemek üzere tablo verilerine filtreleyebilirsiniz. Bunu yaptığınızda, sekmelerde görüntülenen bilgilerin kapsamı filtrelenmiş zaman aralığına göre belirlenmiştir.

Dotnet Ayırma zamanının filtrelenmiş grafiğinin ekran görüntüsü.

Dotnet Ayırma zamanının filtrelenmiş grafiğinin ekran görüntüsü.

Ayrıca grafiği yakınlaştırabilir veya uzaklaştırabilirsiniz.

Tahsis

Ayırma görünümü, bellek ayıran nesnelerin konumunu ve bu nesnelerin ne kadar bellek ayırdığını gösterir.

Genişletilmiş Ayırma görünümünün ekran görüntüsü.

Genişletilmiş Ayırma görünümünün ekran görüntüsü.

Ayırma görünümünde aşağıdaki bilgiler görüntülenir:

  • Tür sütunu, belleği kaplayan sınıfların ve yapıların listesidir. Arka izlemesini ters çağrı ağacı olarak görüntülemek için bir türe çift tıklayın. Yalnızca Ayırma görünümünde, seçilen kategoride bellek alan öğeleri görebilirsiniz.

  • Ayırmalar sütunu, belirli bir ayırma türü veya işlevi içindeki belleği alan nesne sayısını gösterir. Bu sütun yalnızca Ayırma, Çağrı Ağacı ve İşlevler görünümlerinde görünür.

  • Bayt ve Ortalama Boyut (Bayt) sütunları varsayılan olarak görünmez. Bunları göstermek için Tür veya Ayırmalar sütununa sağ tıklayın ve ardından Bayt ve Ortalama Boyut (Bayt) seçeneklerini seçerek bunları grafiğe ekleyin.

    İki sütun Toplam (Ayırmalar) ve Kendi Kendine (Ayırmalar) sütunlarına benzer, ancak bellek alan nesne sayısı yerine alınan bellek miktarını gösterir. Bu sütunlar yalnızca Ayırma görünümünde görünür.

  • Modül adı sütunu, çağıran işlevi veya işlemi içeren modülü gösterir.

Bu sütunların tümü sıralanabilir. Tür ve Modül Adı sütunları için öğeleri artan veya azalan düzende alfabetik olarak sıralayabilirsiniz. Ayırmalar, Bayt ve Ortalama Boyut (Bayt) için, sayısal değeri artırarak veya azaltarak öğeleri sıralayabilirsiniz.

Simgeler

Ayırma, Çağrı Ağacı ve İşlevler sekmelerinde aşağıdaki simgeler görünür:

  • Değer türü simgesi - Tamsayı gibi bir değer türü

  • Değer türü koleksiyon simgesi - Tamsayı dizisi gibi bir değer türü koleksiyonu

  • Başvuru türü simgesi - Dize gibi bir başvuru türü

  • Başvuru türü koleksiyon simgesi - Dize dizisi gibi bir başvuru türü koleksiyonu

Çağrı Ağacı

Çağrı Ağacı görünümü, çok fazla bellek ayıran nesneler içeren işlev yürütme yollarını gösterir.

Arama Ağacı görünümünün ekran görüntüsü.

Arama Ağacı görünümünün ekran görüntüsü.

Çağrı Ağacı görünümünde aşağıdaki bilgiler görüntülenir:

  • İşlev Adı sütunu, belleği ayıran nesneleri içeren işlevin işlemini veya adını gösterir. Ekran, incelediğiniz düğümün düzeyine bağlıdır.
  • Toplam (Ayırmalar) ve Toplam Boyut (Bayt) sütunları, ayrılan nesnelerin sayısını ve bir işlev tarafından kullanılan bellek miktarını ve çağırdığı diğer tüm işlevleri gösterir. Toplam Boyut (Bayt) sütunu varsayılan olarak gizlidir.
  • Kendi Kendine (Ayırmalar) ve Kendi Kendine Boyut (Bayt) sütunları, ayrılan nesnelerin sayısını ve seçilen tek bir işlev veya ayırma türü tarafından kullanılan bellek miktarını gösterir.
  • Ortalama Boyut (Bayt) sütunu, Ayırmalar görünümündekiyle aynı bilgileri gösterir. Bu sütun varsayılan olarak gizlenir.
  • Modül adı sütunu, çağıran işlevi veya işlemi içeren modülü gösterir.

Arama Ağacı görünümünde görüntülenen ek seçenekler şunlardır:

  • Sık Erişimli Yolu Genişlet düğmesi, belleği ayıran birçok nesne içeren bir işlev yürütme yolunu vurgular. Algoritma, seçtiğiniz bir düğümde başlar ve en fazla ayırmanın yolunu vurgular ve araştırmanızda size yol gösterir.
  • Sık Erişimli Yolu Göster düğmesi, hangi düğümlerin etkin yolun parçası olduğunu gösteren alev simgelerini gösterir veya gizler.

Genişletilmiş etkin yolun ekran görüntüsü.

Genişletilmiş etkin yolun ekran görüntüsü.

İşlevler

İşlevler görünümünde bellek ayrılan işlemler, modüller ve işlevler gösterilir.

İşlevler görünümünün ekran görüntüsü.

İşlevler görünümünün ekran görüntüsü.

İşlevler görünümünde görüntülenen bilgiler şunları içerir:

  • Ad sütunu, işlemleri en üst düzey düğümler olarak gösterir. İşlemlerin altında modüller, modüllerin altında ise işlevler yer alır.

  • Ayırma ve Çağrı ağacı görünümlerinde olduğu gibi aynı bilgileri gösteren aşağıdaki sütunlar:

    • Toplam (Ayırmalar)
    • Self (Ayırmalar)
    • Toplam Boyut (Bayt)
    • Kendi Boyutu (Bayt)
    • Ortalama Boyut (Bayt)

Koleksiyon

Koleksiyon görünümü, atık toplama sırasında kaç nesnenin toplandığını veya saklandığını gösterir.

Koleksiyon görünümünün ekran görüntüsü.

Koleksiyon görünümünün ekran görüntüsü.

Koleksiyon görünümünde aşağıdaki bilgiler görüntülenir.

  • GC sütunu, yürütülebilir dosyanın yaşam döngüsünde bu çöp toplamanın kimliğini gösterir.
  • Oluşturma sütunu, atık toplamanın Neslini gösterir.
  • GC Türü sütunu bu çöp toplamanın türünü gösterir.
  • GC Reason sütunu bu çöp toplama olayının nedenini gösterir.
  • Duraklatma Süresi sütunu, atık toplayıcının yığının özel kullanımına ihtiyaç duyduğundan yürütmenin engellendiği zamanı gösterir. Arka plan çöp toplama için bu değer küçüktür.
  • LOH Boyutu sütunu, atık toplayıcı çalıştırıldıktan sonra Büyük Nesne Yığınının boyutunu gösterir.
  • POH Boyutu sütunu, çöp toplayıcı çalıştırıldıktan sonra Sabitlenmiş Nesne Yığınının boyutunu gösterir.
  • Sonlandırılabilir Surv (MB) sütunu, atık toplama işleminden sonra kalan sonlandırıcılara (yıkıcılara) sahip nesnelerin MB sayısını gösterir.
  • Sabitlenmiş Nesneler sütunu, bu çöp toplamanın yükseltilen sabitlenmiş nesne sayısını gösterir.
  • Toplanan sütunu, çöp toplayıcının topladığı nesne sayısını gösterir.
  • Survived sütunu, çöp toplayıcı çalıştırıldıktan sonra hayatta kalan nesne sayısını gösterir.

Bir satır seçtiğinizde, bu görünümde toplanan ve hayatta kalan nesneleri türe göre görselleştirmek için pasta grafikler de gösterilir.

Koleksiyon görünümünde pasta grafiklerin ekran görüntüsü.

Filtreleme araçları

Ayırmalar, Çağrı Ağacı ve İşlevler görünümlerinin tümü Yalnızca Kodumu Göster ve Yerel Kodu Göster seçeneklerini ve bir filtre kutusunu içerir.

  • Yalnızca Kodumu Göster, sistemleri, çerçeveleri ve diğer kullanıcı olmayan kodları [Dış Kod] çerçevelerine daraltarak yalnızca kodunuz üzerinde durabilmenizi sağlar. Daha fazla bilgi için bkz . Just My Code ile kullanıcı kodunda hata ayıklama.
  • Yerel Kodu Göster, analiz hedefi içindeki yerel kodu gösterir ve kullanıcı olmayan kodu içerebilir.
  • Filtre kutusuyla, sağladığınız değere göre Ad veya İşlev adı sütununu filtreleyebilirsiniz. Kutuya bir dize değeri girin. Tablo daha sonra yalnızca bu dizeyi içeren türleri gösterir.