Aracılığıyla paylaş


.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ı geliştirmeyi gösteren bir öğretici için bkz. Örnek olay incelemesi: Kodiyileştirmeye yönelik başlangıç kılavuzu.

Kurulum

  1. Visual Studio projesinde, çözüm yapılandırmasını Yayın olarak ayarlayın ve dağıtım hedefini seçin.

    Dağıtım hedefi genellikle proje adıyla eşleşir ve yerel bir dağıtımı gösterir.

  2. Visual Studio'da Performans Profili Oluşturucu'yu açmak için Alt+F2 seçin.

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

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

  4. Aracı çalıştırmak için Başlat düğmesine basın.

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

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

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

    Tahsis sekmesinin ekran görüntüsü. Tahsis sekmesi

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.

Screenshot of settings for the Dotnet Allocation tool.Dotnet Ayırma aracının ayarlarının ekran görüntüsü. Dotnet Ayırma aracıSettings for the Dotnet Allocation tool içinAyarları

Ö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ü.

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. Alt nesne delta grafiği, uygulama nesnelerinin değişiklik yüzdesini gösterir. Çö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ü. için bir grafik

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 Tahsis zamanının filtrelenmiş grafiğinin ekran görüntüsü.

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

İçgörüler

İçgörüler görünümünde herhangi bir içgörü görünürse, tanımlanan sorun hakkında daha fazla bilgi almak için sağlanan bağlantıyı kullanın.

Yapay zeka yardımı alma

Copilot kullanıyorsanız en iyi içgörülere bakarken yapay zeka yardımı alabilirsiniz. Copilot, belirli performans içgörüleri kümesiyle ilgili bilgiler ve içgörüler sağlar. Copilot ile en fazla belleği kullanan nesneler hakkında sorular da sorabilirsiniz. Bu da daha verimli veya uygun maliyetli kod oluşturmanıza yardımcı olabilir.

Copilot'a Sor düğmesi Copilot'a Sor düğmesinin ekran görüntüsü. Belirli bir performans içgörüleri tanımlanmasa bile görüntülenir. Copilot'tan öğrenmek ve soru sormaya başlamak için Copilot'a sorun'ı seçin.

Ayırma

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

Ayırma görünümünün genişletilmiş hali 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. Bir türün geriye dönük izini ters çağrı ağacı olarak görüntülemek için çift tıklayın. Yalnızca Ayırma görünümünde, seçilen kategorideki belleği kaplayan öğeleri görebilirsiniz.

  • Ayırmaları sütunu, belirli bir ayırma türü veya işlevi içinde belleği alan nesne sayısını gösterir. Bu sütun yalnızca Ayırma, Çağrı Ağacıve İşlevleri 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 Self (Ayırmalar)ile benzerdir, ancak bu sütunlar bellek alan nesne sayısı yerine, alınan bellek miktarını gösterirler. 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, öğeleri sayısal değere göre artan ya da azalan biçimde sıralayabilirsiniz.

Sembol

Aşağıdaki simgeler Ayırma, Çağrı Ağacıve İşlevleri sekmelerinde 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

  • Referans türü simgesi - Dize gibi bir referans 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.

Çağrı 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 Boyutu (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 gizlenir.
  • Self (Ayırmalar) ve Self-Size (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.

Çağrı 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.
  • Etkin 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ü.

Işlev

İşlevleri görünümü bellek tahsis eden işlemleri, modülleri ve işlevleri gösterir.

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

İşlevleri 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.

  • Aşağıdaki sütunlar, Ayırma ve Çağrı ağacı görünümlerindeki ile aynı bilgileri göstermektedir:

    • Toplam (Ayırmalar)
    • Kendi (Ayırmalar)
    • Toplam Boyut (Bayt)
    • Öz Boyut (Bayt)
    • Ortalama Boyut (Bayt)

Koleksiyon

Koleksiyonu görünümü, çöp toplama sırasında kaç nesne toplandığını veya saklandığını gösterir.

Screenshot of the Collection view.Koleksiyon görünümünün ekran görüntüsü. Koleksiyon görünümüThe Collection view

Aşağıdaki bilgiler Koleksiyonu görünümünde 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.
  • Nesil sütunu, çöp 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, sonlandırıcıları (yıkıcılar) olan ve çöp toplama işleminden sağ çıkan nesnelerin MB cinsinden toplam boyutunu gösterir.
  • Sabitlenmiş Nesneler sütunu, bu çöp toplama işleminin terfi etmiş 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 grafikleri ekran görüntüsü. Koleksiyon Görünümü

Filtreleme araçları

Ayırmalar, Çağrı Ağaçve İşlevler görünümlerinin üçü de 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çevelere 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ı dışı kod 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.