Performans Profili Oluşturucu'da hata ayıklamadan bellek kullanımını analiz etme (C#, Visual Basic, C++, F#)

Bellek Kullanımı aracı, uygulamanızın bellek kullanımını izler. Visual Studio'da etkin olarak geliştirmekte olduğunuz senaryoların gerçek zamanlı bellek etkilerini incelemek için aracını kullanabilirsiniz. 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 mod (.NET ve yerel) uygulamalarında desteklenir.

Bellek Kullanımı aracı, hata ayıklayıcıyla veya hata ayıklayıcı olmadan çalışabilir. Bu makalede, yayın derlemeleri için önerilen Visual Studio Performans Profili Oluşturucu'da hata ayıklayıcı olmadan Bellek Kullanımı aracının nasıl kullanılacağını göstereceğiz. İhtiyaçlarınıza en uygun bellek çözümleme aracını seçme hakkında bilgi için bkz . Bellek çözümleme aracı seçme.

Bellek Kullanımı tanılama oturumları

Bellek Kullanımı tanılama oturumu başlatmak için:

  1. Visual Studio'da bir proje 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 hedefi olarak Yerel Windows Hata Ayıklayıcısı'nı (veya Yerel Makine) seçin.

  3. Menü çubuğunda Performans Profili Oluşturucu hatalarını ayıkla'yı> seçin.

  4. Kullanılabilir Araçlar'ın altında Bellek Kullanımı'nı ve ardından Başlat'ı seçin.

    Start a Memory Usage diagnostic session

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.

Screenshot of the Diagnostic Tools window in the Visual Studio Performance Profiler showing a timeline graph of the app's memory use.

Screenshot of the Diagnostic Tools window in the Visual Studio Performance Profiler showing a timeline graph of the app's memory use.

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 işlem tamamlandığında atıldığı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.

Anlık görüntüleri toplamak için bellek verilerini yakalamak istediğinizde Anlık görüntü al'ı seçin.

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üler aldığınızda rapor oluşturmak için Koleksiyonu Durdur'u seçin.

Stop Collection

Veri toplama veya görüntüleme konusunda sorun yaşıyorsanız bkz . Profil oluşturma hatalarını giderme ve sorunları giderme.

Bellek Kullanımı raporları

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

Screenshot of the overview page in the Memory Usage tool in the Visual Studio Performance Profiler, showing a memory usage graph and two snapshot panes.

Screenshot of the overview page in the Memory Usage tool in the Visual Studio Performance Profiler, showing a memory usage graph and two snapshot panes.

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 önceki anlık görüntü arasındaki farkı gösterir.

Sayılar, yeni Visual Studio pencerelerinde ayrıntılı Bellek Kullanımı raporu 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ı (fark) raporu , iki anlık görüntüdeki türleri ve örnekleri karşılaştırır.

Snapshot view links

Görsel Açıklama
Step 1 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.
Step 2 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.
Step 3 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 , anlık görüntünün tanılama oturumundaki ilk anlık görüntü olduğu anlamına gelir. 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.
Step 4 Bu anlık görüntüdeki toplam bellek nesnesi sayısı ile önceki anlık görüntü arasındaki fark. Anlık görüntü fark raporunu görüntülemek için bu bağlantıyı seçin. Türlerin toplam örnek sayısındaki farka göre sıralanır.

Snapshot view links

Görsel Açıklama
Step 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.
Step 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.
Step 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.
Step 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 , anlık görüntünün tanılama oturumundaki ilk anlık görüntü olduğu anlamına gelir. 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.

Bellek Kullanımı anlık görüntüsü raporları

Bellek Kullanımına genel bakış sayfasında anlık görüntü bağlantılarından birini seçtiğinizde, yeni bir sayfada bir anlık görüntü raporu açılır.

Memory Usage snapshot report

Memory Usage snapshot report

Nesne Türü maviyse, bunu seçerek kaynak koddaki nesneye ayrı bir pencerede gidebilirsiniz.

Tanımlayabildiğiniz veya kodunuzdaki katılımını anlamadığınız türler büyük olasılıkla .NET, işletim sistemi veya derleyici nesneleridir. Bellek Kullanımı aracı, nesnelerinizin sahiplik zincirlerine dahil olduklarında bu nesneleri görüntüler.

Anlık görüntü raporunda:

  • Yönetilen Bellek ağacı rapordaki türleri ve örnekleri gösterir. Bir tür veya örnek seçildiğinde, seçilen öğe için Kök ve Başvuruda Bulunan Nesnelere Giden Yollar ağaçları görüntülenir.

  • Kök ağacının Yolları, bir türe veya örneğe başvuran nesne zincirini gösterir. .NET çöp toplayıcısı, yalnızca tüm başvuruları serbest bırakıldığında nesnenin belleğini temizler.

  • Başvurulan Türler veya Başvurulan Nesneler ağacı, seçilen türün veya örneğin başvurduğunu nesneleri gösterir.

Rapor ağacı filtreleri

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

Sort and filter options

Sort and filter options

  • 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.

  • Boyutu (Bayt) toplam belleğin yüzde 0,5'inden az olan türleri gizlemek için Filtre açılan listesinde Küçük Nesneleri Daralt'ı seçin.

  • Dış kod tarafından oluşturulan çoğu örneği gizlemek için Filtre açılan listesinden Yalnızca Kodum'atıklayın. Dış türler işletim sistemine veya çerçeve bileşenlerine aittir veya derleyici tarafından oluşturulur.

Anlık görüntü ayrıntıları raporları

Anlık görüntü ayrıntıları raporu, tanılama oturumundan alınan bir anlık görüntüyü açıklar. Raporu açmak için anlık görüntü bölmesindeki boyut veya nesneler bağlantısını seçin.

Links to snapshot report in a snapshot pane

Links to snapshot report in a snapshot pane

Her iki bağlantı da aynı raporu açar. Tek fark, Yönetilen Bellek ağacının başlangıç sıralama düzenidir. Boyut bağlantısı, raporu Kapsayıcı Boyut (Bayt) sütununa göre sıralar. Nesneler bağlantısı, raporu Count sütununa göre sıralar. Rapor açıldıktan sonra sıralama sütununu veya sırasını değiştirebilirsiniz.

Yönetilen Bellek ağacı (Anlık görüntü ayrıntıları raporları)

Yönetilen Bellek ağacı, bellekte tutulan nesne türlerini listeler. Türün boyuta göre sıralanmış en büyük 10 örneğini görüntülemek için bir tür adını genişletin. Seçilen öğe için Kök ve Başvuruda Bulunan Nesneler ağaçlarının yollarını görüntülemek için bir tür veya örnek seçin.

Managed Heap tree

Managed Memory tree

Anlık görüntü ayrıntıları raporundaki Yönetilen Bellek ağacı aşağıdaki sütunlara sahiptir:

Veri Akışı Adı Açıklama
Nesne Türü Tür veya nesne örneğinin adı.
Sayı Türün nesne örneklerinin sayısı. Örnek için sayı her zaman 1'dir.
Boyut (Bayt) Bir tür için, anlık görüntüdeki türün tüm örneklerinin boyutu, örneklerde bulunan nesnelerin boyutu daha azdır. Bir örnek için nesnenin boyutu, örneğin içerdiği nesnelerin boyutu daha azdır.
Kapsayıcı Boyut (Bayt) Türün örneklerinin boyutu veya kapsanan nesnelerin boyutu da dahil olmak üzere tek bir örneğin boyutu.
Modül nesnesini içeren modül.

Kök ağaç yolları (Anlık görüntü ayrıntıları raporları)

Kök ağacının Yolları, bir türe veya örneğe başvuran nesne zincirini gösterir. .NET çöp toplayıcısı, yalnızca tüm başvuruları serbest bırakıldığında nesnenin belleğini temizler.

Kök Ağacına Giden Yollar'daki bir tür için, bu türe başvuruları tutan nesne sayısı Başvuru Sayısı sütununda görünür.

Paths to Root tree for types

Paths to Root tree for types

Başvurulan Türler veya Başvurulan Nesneler ağacı (Anlık görüntü ayrıntıları raporları)

Başvurulan Türler veya Başvurulan Nesneler ağacı, seçilen türün veya örneğin başvurduğunu nesneleri gösterir.

Referenced Objects tree for instances

Referenced Objects tree for instances

Anlık görüntü ayrıntıları raporundaki Başvurulan Türler ağacı aşağıdaki sütunlara sahiptir. Başvurulan Nesneler ağacında Başvuru Sayısı sütunu yoktur.

Veri Akışı Adı Açıklama
Nesne Türü veya Örnek Türün veya örneğin adı.
Başvuru Sayısı Türler için, türün nesne örneklerinin sayısı.
Boyut (Bayt) Bir tür için, türün tüm örneklerinin boyutu, türün içerdiği nesnelerin boyutu daha azdır. Bir örnek için nesnenin boyutu, nesnenin içerdiği nesnelerin boyutu daha azdır.
Kapsayıcı Boyut (Bayt) Türün örneklerinin toplam boyutu veya kapsanan nesnelerin boyutu da dahil olmak üzere örneğin boyutu.
Modül nesnesini içeren modül.

Anlık görüntü farkı (fark) raporları

Anlık görüntü farkı (fark) raporu, birincil anlık görüntü ile önceki anlık görüntü arasındaki değişiklikleri gösterir. Fark raporunu açmak için anlık görüntü bölmesindeki fark bağlantılarından birini seçin.

Her iki bağlantı da aynı raporu açar. Tek fark, rapordaki Yönetilen Bellek ağacının başlangıç sıralama düzenidir. Boyut bağlantısı, raporu Kapsayıcı Boyut Fark (Bayt) sütununa göre sıralar. Nesneler bağlantısı, raporu Count Diff sütununa göre sıralar. Rapor açıldıktan sonra sıralama sütununu veya sırasını değiştirebilirsiniz.

Links to difference report in a snapshot pane

Links to difference report in a snapshot pane

Yönetilen Bellek ağacı (Anlık görüntü fark raporları)

Yönetilen Bellek ağacı, bellekte tutulan nesne türlerini listeler. Türün boyuta göre sıralanmış en büyük 10 örneğini görüntülemek için bir tür adını genişletebilirsiniz. Seçilen öğe için Kök ve Başvuruda Bulunan Nesneler ağaçlarının yollarını görüntülemek için bir tür veya örnek seçin.

Managed Heap tree for a type in difference report

Managed Memory tree for a type in difference report

Anlık görüntü fark raporundaki Yönetilen Bellek ağacı aşağıdaki sütunlara sahiptir:

Veri Akışı Adı Açıklama
Nesne Türü Tür veya nesne örneğinin adı.
Sayı Birincil anlık görüntüdeki bir türün örnek sayısı. Örnek için sayı her zaman 1'dir.
Sayı Farkı Bir tür için, birincil anlık görüntü ile önceki anlık görüntü arasındaki tür örnekleri sayısındaki fark. Bir örnek için alan boş.
Boyut (Bayt) Birincil anlık görüntüdeki nesnelerin boyutu, nesnelerdeki nesnelerin boyutu daha azdır. Bir tür için Boyut (Bayt) ve Kapsayıcı Boyut (Bayt), tür örneklerinin boyutlarının toplamlarıdır.
Toplam Boyut Farkı (Bayt) Bir tür için, birincil anlık görüntü ile önceki anlık görüntü arasındaki tür örneklerinin toplam boyutu arasındaki fark, örneklerdeki nesnelerin boyutu daha azdır. Bir örnek için alan boş.
Kapsayıcı Boyut (Bayt) Birincil anlık görüntüdeki nesnelerin boyutu, nesnelerdeki nesnelerin boyutu da dahil olmak üzere.
Kapsayıcı Boyut Farkı (Bayt) Bir tür için, birincil anlık görüntü ile önceki anlık görüntü arasındaki türün tüm örneklerinin boyutundaki fark (nesnelerdeki nesnelerin boyutu dahil). Bir örnek için alan boş.
Modül nesnesini içeren modül.

Kök ağaç yolları (Anlık görüntü fark raporları)

Kök ağacının Yolları, bir türe veya örneğe başvuran nesne zincirini gösterir. .NET çöp toplayıcısı, yalnızca tüm başvuruları serbest bırakıldığında nesnenin belleğini temizler.

Kök Ağacına Giden Yollar'daki bir tür için, bu türe başvuruları tutan nesne sayısı Başvuru Sayısı sütununda görünür. Önceki anlık görüntüden sayı farkı, Başvuru Fark sütunundadır.

Paths To Root tree in a diff report

Paths To Root tree in a diff report

Başvurulan Türler veya Başvurulan Nesneler ağacı (Anlık görüntü fark raporları)

Başvurulan Türler veya Başvurulan Nesneler ağacı, seçilen türün veya örneğin başvurduğunu nesneleri gösterir.

Referenced Types in a diff report

Referenced Types in a diff report

Anlık görüntü fark raporundaki Başvurulan Türler ağacı aşağıdaki sütunlara sahiptir. Başvurulan Nesneler ağacı Örnek, Boyut (Bayt), Kapsayıcı Boyut (Bayt) ve Modül sütunlarına sahiptir.

Veri Akışı Adı Açıklama
Nesne Türü veya Örnek Tür veya nesne örneğinin adı.
Başvuru Sayısı Birincil anlık görüntüdeki bir türün örnek sayısı.
Başvuru Sayısı Fark Bir tür için, birincil anlık görüntü ile önceki anlık görüntü arasındaki tür örnekleri sayısındaki fark.
Boyut (Bayt) Birincil anlık görüntüdeki nesnelerin boyutu, nesnelerdeki nesnelerin boyutu daha azdır. Bir tür için Boyut (Bayt) ve Kapsayıcı Boyut (Bayt), tür örneklerinin boyutlarının toplamlarıdır.
Toplam Boyut Farkı (Bayt) Bir tür için, birincil anlık görüntü ile önceki anlık görüntü arasındaki tür örneklerinin toplam boyutu arasındaki fark, örneklerdeki nesnelerin boyutu daha azdır.
Kapsayıcı Boyut (Bayt) Birincil anlık görüntüdeki nesnelerin boyutu, nesnelerdeki nesnelerin boyutu da dahil olmak üzere.
Kapsayıcı Boyut Farkı (Bayt) Bir tür için, birincil anlık görüntü ile önceki anlık görüntü arasındaki türün tüm örneklerinin boyutundaki fark (nesnelerdeki nesnelerin boyutu dahil).
Modül nesnesini içeren modül.

raporu Analizler

Visual Studio 2022'de Bellek Analizi aracı, yönetilen bellek için birden çok güçlü yerleşik otomatik içgörü de sunar. Yönetilen türler raporlarında Analizler sekmesini seçtiğinizde Yinelenen dizeler, Seyrek diziler ve Olay işleyicisi sızıntıları gibi geçerli otomatik içgörüleri gösterir. Daha fazla bilgi için bkz. Bellek Kullanımı Analizler.

Screenshot of Managed memory insights.