Aracılığıyla paylaş


Yayın derlemelerinde bellek kullanımını analiz etme (C#, Visual Basic, C++, F#)

Bellek Kullanımı aracı, uygulamanızın bellek kullanımını izler. Aracı kullanarak Visual Studio'da etkin olarak geliştirdiğiniz senaryoların gerçek zamanlı bellek etkilerini inceleyebilirsiniz. Uygulamanın bellek durumlarının ayrıntılı anlık görüntülerini alabilir ve bellek sorunlarının kök nedenlerini bulmak için anlık görüntüleri karşılaştırabilirsiniz. Bellek Kullanımı aracı .NET, ASP.NET, C++ veya karma modda (.NET ve yerel) uygulamalarda desteklenir.

Bellek Kullanımı aracı, sürüm ya da hata ayıklama derlemelerindeçalıştırabilir. Bu makalede, yayın derlemeleri için önerilen Visual Studio Performance Profiler'da Bellek Kullanımı aracının nasıl kullanılacağını göstereceğiz. gereksinimleriniz için en iyi bellek çözümleme aracını seçme hakkında bilgi için bkz. Bellek çözümleme aracı seçme.

Bu belgelerle en iyi deneyim için makalenin üst kısmındaki listeden tercih ettiğiniz geliştirme dilini veya çalışma zamanını seçin.

Bellek Kullanımı tanılama oturumları

Bellek Kullanımı'nın tanılama oturumunu başlatmak için:

  1. Visual Studio'da bir project açın.

    Bellek Kullanımı aracı .NET, ASP.NET, C++ veya karma mod (.NET ve yerel) uygulamaları destekler.

  2. Hata Ayıkla menüsünde çözüm yapılandırmasını Yayın olarak ayarlayın ve dağıtım hedefini seçin.

    Dağıtım hedefi genellikle yerel dağıtımı gösteren project adıyla eşleşir.

  3. Menü çubuğunda Hata AyıklamaPerformans Profili Oluşturucuöğesini seçin.

  4. Kullanılabilir Araçlar altında, Bellek Kullanımıöğesini ve ardından başlangıç seçin.

    Bellek Kullanımı tanılama oturumu başlatın.

    Not

    CMake gibi bazı project türleri için başlangıç hedefini Executable olarak ayarlamanız gerekir. Daha fazla bilgi için bkz. Project için hangi araçlar destekleniyor?.

Bellek kullanımını izleme

Tanılama oturumu başlattığınızda uygulamanız başlatılır ve Tanılama Araçları penceresinde uygulamanızın bellek kullanımına ilişkin bir zaman çizelgesi grafiği görüntülenir.

Visual Studio Performans Profili Oluşturucu'daki Tanılama Araçları penceresinin, uygulamanın bellek kullanımı zaman çizelgesi grafiğini gösteren ekran görüntüsü.

Zaman çizelgesi grafiği, uygulama çalışırken bellek dalgalanmalarını gösterir. Grafikteki ani artışlar genellikle bazı kodların veri topladığını veya veri oluşturduğunu ve daha sonra, işlem tamamlandığında veriyi attığını gösterir. Büyük ani artışlar, iyileştirebileceğiniz alanları gösterir. Asıl endişe, döndürülmeyen bellek tüketimindeki artıştır. Bu, verimsiz bellek kullanımına veya hatta bellek sızıntısına işaret edebilir.

Uygulama bellek durumlarının anlık görüntülerini alma

Bir uygulama çok sayıda nesne kullanır ve analizinizi tek bir senaryoya yoğunlaştırmak isteyebilirsiniz. Ya da araştırmak için bellek sorunları bulabilirsiniz. Belirli anlarda bellek kullanımını yakalamak için tanılama oturumu sırasında anlık görüntüler alabilirsiniz. Bellek sorunu ortaya çıkmadan önce uygulamanın temel anlık görüntüsünü almak iyidir. Sorunun ilk ortaya çıkmasından sonra başka bir anlık görüntü alabilir ve senaryoyu tekrarlayabilirseniz ek anlık görüntüler alabilirsiniz.

tr-TR: Anlık görüntüleri toplamak için, bellek verilerini yakalamak istediğinizde Anlık görüntü al seçeneğini tıklayın.

Anlık görüntü almanın ekran görüntüsü.

Tanılama oturumunu kapatma

Rapor oluşturmadan izleme oturumunu durdurmak için tanılama penceresini kapatması gerekir. Toplamayı bitirdiğinizde veya anlık görüntü aldığınızda rapor oluşturmak için, Koleksiyonu Durdur'ı seçin.

Koleksiyonu durdurma ekran görüntüsü.

Veri toplama veya görüntüleme konusunda sorun yaşıyorsanız, Profil oluşturma hatalarını gidermeye ve sorunları düzeltmeye bakınız.

Bellek Kullanımı raporları

Veri toplamayı durdurduktan sonra, Bellek Kullanımı aracı uygulamayı durdurur ve Bellek Kullanımı genel bakış sayfasını görüntüler.

Visual Studio Performance Profiler'daki Bellek Kullanımı aracındaki genel bakış sayfasının ekran görüntüsü; bellek kullanım grafiği ve iki anlık görüntü bölmesi gösterilir.

Bellek Kullanımı anlık görüntüleri

Anlık Görüntü bölmelerindeki sayılar, her anlık görüntü alındığında bellekteki nesneleri ve baytları ve anlık görüntü ile bir önceki arasındaki farkı gösterir.

Numaralar, yeni Visual Studio pencerelerde ayrıntılı Memory Usage rapor görünümlerini açan bağlantılardır. anlık görüntü ayrıntıları raporu türleri ve örnekleri tek bir anlık görüntüde gösterir. anlık görüntü fark raporu iki anlık görüntüdeki türleri ve örnek durumları karşılaştırır.

Anlık görüntü görünümü bağlantılarının ekran görüntüsüAnlık görüntü görünümü bağlantıları

C++ için Nesneleri (Fark) sütunu Ayırmaları (Fark)olarak adlandırılır.

Resim Açıklama
Adım 1İşlem Kılavuzu-1 Anlık görüntü alındığında bellekteki toplam nesne sayısı. Türlerin örnekleri sayısına göre sıralanmış bir anlık görüntü ayrıntıları raporu görüntülemek için bu bağlantıyı seçin.
Adım 2İşlem Kılavuzu-2 Bu anlık görüntüdeki toplam bellek nesnesi sayısı ile önceki anlık görüntü arasındaki fark. Türlerin toplam örnek sayısındaki farka göre sıralanmış bir anlık görüntü fark raporu görüntülemek için bu bağlantıyı seçin.
Adım 3İşlem Kılavuzu-3 Anlık görüntü alındığında bellekteki toplam bayt sayısı. Tür örneklerinin toplam boyutuna göre sıralanmış bir anlık görüntü ayrıntıları raporu görüntülemek için bu bağlantıyı seçin.
Adım 4İşlem Kılavuzu-4 Bu anlık görüntüdeki bellek nesnelerinin toplam boyutu ile önceki anlık görüntü arasındaki fark. Pozitif bir sayı, bu anlık görüntünün bellek boyutunun öncekinden büyük olduğu, negatif bir sayı ise boyutun daha küçük olduğu anlamına gelir. Temel, bir anlık görüntünün tanılama oturumundaki ilk anlık görüntü olduğunu belirtir. Fark Yok, farkın sıfır olduğu anlamına gelir. Tür örneklerinin toplam boyutundaki farka göre sıralanmış bir anlık görüntü fark raporu görüntülemek için bu bağlantıyı seçin.

Yönetilen tür raporları

Bellek Kullanımı özet tablosunda bir Nesneleri (Fark) hücresinin geçerli bağlantısını seçin.

Yönetilen tür raporunun ekran görüntüsü.

Not

.NET kodu için Ayrıntıları Görüntüle simgesi (Nesne Türü sütunundaki örnek simgesi) yalnızca debugger ile tümleşik Bellek Kullanımı aracı kullanırken veya bir yığın anlık görüntüsü açıp Yönetilen Bellekte Hata Ayıklama seçtiğinizde kullanılabilir.

Üst bölmede, tür tarafından referans alınan tüm nesnelerin boyutu da dahil olmak üzere anlık görüntüde bulunan türlerin sayısı ve boyutu gösterilir (Kapsayıcı Boyut).

Alt bölmedeki Kök'e Giden Yollar ağacı, üst bölmede seçilen türe başvuran nesneleri görüntüler. .NET çöp toplayıcısı, yalnızca nesneye başvuran son tür serbest bırakıldığında nesnenin belleğini temizler. Kök ağacına giden Yolları kullanma hakkında daha fazla bilgi için bkz. kök için sık erişimli yolu analiz etme.

Yönetilen tür raporunun ekran görüntüsü.

Not

.NET kodu için View Instances simgesi (Nesne Türü sütunundaki örnek simgesiDBG_MMA_InstancesIcon) yalnızca hata ayıklayıcı ile tümleşik Bellek Kullanımı aracı kullanırken veya bir heap anlık görüntüsü açıp Yönetilen Bellekte hata ayıklama'yı seçtiğinizde kullanılabilir.

Üst bölmede, tür tarafından referans alınan tüm nesnelerin boyutu da dahil olmak üzere anlık görüntüde bulunan türlerin sayısı ve boyutu gösterilir (Kapsayıcı Boyut).

Alt bölmedeki Kök'e Giden Yollar ağacı, üst bölmede seçilen türe başvuran nesneleri görüntüler. .NET çöp toplayıcısı, yalnızca bir nesneye referans veren son tür bellekten çıkarıldığında nesnenin hafızasını temizler. Kök ağacına giden Yolları kullanma hakkında daha fazla bilgi için bkz. kök için sık erişimli yolu analiz etme.

Referanslı Türler ağacı, üst bölmede seçilmiş tür tarafından tutulan referansları gösterir.

Başvurulan Nesneler raporunun ekran görüntüsü.

Referanslı Türler ağacı, üst bölmede seçilmiş tür tarafından tutulan referansları gösterir.

Başvurulan Nesneler raporunun ekran görüntüsü.

Rapor ağacı filtreleri

Uygulama geliştiricilerin bellek sorunlarını incelemesi için uygulamalardaki birçok tür gerekli değildir. Anlık görüntü raporu filtreleri, Yönetilen Bellek ve Kök Yolları ağaçlarında bu türlerin çoğunu gizleyebilir.

Sıralama ve filtreleme seçenekleriBellek kullanımı sıralama ve filtreleme

  • Bir ağacı tür adına göre filtrelemek için, Filtre kutusuna adı girin. Filtre büyük/küçük harfe duyarlı değildir ve tür adının herhangi bir bölümünde belirtilen dizeyi tanır.

  • Dış kod tarafından oluşturulan örneklerin çoğunu gizlemek için, Filtresi açılır listesinde Yalnızca Kodumu Göster seçeneğini seçin. Dış türler işletim sistemine veya çerçeve bileşenlerine aittir veya derleyici tarafından oluşturulur.

  • Filtre açılır menüsünde Küçük Nesneleri Daralt'ı seçin, böylece Boyutu (Bayt) toplam belleğin yüzde 0,5'inden daha az olan türler gizlenir.

Yerleşik tür raporları

Tanılama Araçları penceresinin Bellek Kullanımı özet tablosunda bir Ayırmaları (Fark) veya Yığın Boyutu (Fark) hücresinin geçerli bağlantısını seçin.

Yerel Tür Görünümünün ekran görüntüsü.

Yerel Tür Görünümünün ekran görüntüsü.

Türleri Görünümü, anlık görüntüdeki türlerin sayısını ve boyutunu görüntüler.

  • Seçili türün nesneleri hakkındaki bilgileri anlık görüntüde görüntülemek için seçili türün yanındaki Ayrıntıları Görüntüle simgesini seçin.

    Örnekleri görünümü, seçilen türün her örneğini görüntüler. Örnek seçildiğinde, Ayırma Çağrı Yığını bölmesinde örneğin oluşturulmasıyla sonuçlanan çağrı yığını görüntülenir. (Bu bilgiler yalnızca hata ayıklama sırasında kullanılabilir.)

    Örnekler görünümü ve Ayırma Çağrı Yığını bölmesinin ekran görüntüsü.

  • Anlık görüntüde seçili türün nesneleri hakkındaki bilgileri görüntülemek için seçili türün yanındaki Örnekleri Görüntüle simgesini seçin.

    Örnekleri görünümü, seçilen türün her örneğini görüntüler. Örnek seçildiğinde, Ayırma Çağrı Yığını bölmesinde örneğin oluşturulmasıyla sonuçlanan çağrı yığını görüntülenir. (Bu bilgiler yalnızca hata ayıklama sırasında kullanılabilir.)

    Örnekler görünümü ve Ayırma Çağrı Yığını bölmesinin ekran görüntüsü.

  • Seçilen türün ayırma yığınını görmek için Yığınlar'ni seçin.

    Yığınlar görünümünün ekran görüntüsü.

  • Seçilen türün ayırma yığınını görmek için Yığınlar'ni seçin.

    Yığınlar görünümünün ekran görüntüsü.

Bellek Kullanımı İçgörüleri

Yönetilen bellek için Bellek Analizi aracı, birden çok güçlü yerleşik otomatik içgörü de sunar. Yönetilen türler raporlarında İçgörüler sekmesini seçin; bu, Yinelenen dizeler, Seyrek dizilerve Olay işleyicisi sızıntılarıgibi geçerli otomatik içgörüleri gösterir.

Bellek Kullanımı aracındaki içgörü görünümünün ekran görüntüsü.Bellek Kullanımı içgörüsü

Bellek Kullanımı aracındaki içgörü görünümünün ekran görüntüsü.Bellek Kullanımı içgörüsü

Yinelenen Dizeler bölümü, yığında birden fazla kez tahsis edilen dizelerin listesini gösterir. Buna ek olarak, bu bölümde boşa harcanan toplam bellek, yani (örnek sayısı - 1) ile dize boyutunun çarpımı gösterilmektedir.

Seyrek Diziler bölümü, performans ve bellek kullanımı açısından verimsiz olabilecek, çoğunlukla sıfır öğeyle dolu dizileri gösterir. Bellek çözümleme aracı bu dizileri otomatik olarak algılar ve bu sıfır değerlerden dolayı ne kadar belleğin boşa harcandığını gösterir.

Visual Studio 2022 sürüm 17.9 Önizleme 1'de bulunan Event İşleyici Sızıntıları bölümü, bir nesne başka bir nesnenin olayına abone olduğunda oluşabilecek olası bellek sızıntılarını gösterir. Eğer olayın yayıncısı, aboneden daha uzun süre varlığını sürdürse bile, başka bir başvuru olmasa dahi abone hayatta kalır. Bu, kullanılmayan belleğin düzgün şekilde boşaltılmamasına ve uygulamanın zaman içinde daha fazla bellek kullanmasına neden olan bellek sızıntılarına neden olabilir.

Belirli türlerin, tuttukları yerel belleğin boyutunu belirlemek için okunabilecek alanları olduğu bilinmektedir. Insights sekmesi, nesne grafında sahte yerel bellek düğümlerini gösterir. Bu düğümler, kullanıcı arabiriminin bunları tanıyacağı ve boyutlarını ve başvuru grafını görüntüleyeceği şekilde üst nesneleri tarafından korunur.

Bellek Kullanımı aracındaki yerel içgörü görünümünün ekran görüntüsü.

Raporları değiştirme (Fark)

  • Bellek Kullanımına genel bakış sayfasındaki Anlık Görüntü bölmesinin hücresindeki değişiklik bağlantısını seçin.

    Hücrede değişiklik bağlantısı seçme seçeneğinin ekran görüntüsü.

  • Yönetilen veya yerel raporun Karşılaştır listesinden bir anlık görüntü seçin.

    Karşılaştır listesinden Anlık görüntü seçme işleminin ekran görüntüsü.

Değişiklik raporu temel rapora temel anlık görüntü değeri ile karşılaştırma anlık görüntüsü arasındaki farkı gösteren sütunlar ((Fark)ile işaretlenmiş) ekler. Yerel Tür Görünümü fark raporu şöyle görünebilir:

Yerel Türler Fark Görünümünün ekran görüntüsü.Yerel Türler Fark Görünümü

Yerel Türler Fark Görünümünün ekran görüntüsü.Yerel Türler Fark Görünümü

Üst bölmede, tür tarafından referans alınan tüm nesnelerin boyutu da dahil olmak üzere anlık görüntüde bulunan türlerin sayısı ve boyutu gösterilir (Kapsayıcı Boyut).