Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Hata ayıklayıcıyla tümleşik Bellek Kullanımı tanılama aracıyla hata ayıklarken bellek sızıntılarını ve verimsiz belleği bulun. Bellek Kullanımı aracı, nesne türlerinin bellek kullanımı üzerindeki etkisini anlamanıza yardımcı olmak için yönetilen ve yerel bellek yığınının bir veya daha fazla anlık görüntülerini almanıza olanak tanır. Ayrıca, hata ayıklayıcı eklemeden veya çalışan bir uygulamayı hedefleyerek bellek kullanımını analiz edebilirsiniz. Daha fazla bilgi için bkz. Yayın ya da hata ayıklama derlemelerinde profil oluşturma araçlarını çalıştırma. gereksinimleriniz için en iyi bellek çözümleme aracını seçme hakkında bilgi için bkz. Bellek çözümleme aracı seçme.
Memory Usage aracında istediğiniz zaman bellek anlık görüntüleri toplayabilirsiniz ancak performans sorunlarını araştırırken uygulamanızın nasıl yürütülür denetlemek için Visual Studio hata ayıklayıcısını kullanabilirsiniz. Kesme noktaları, adımlama, Tümünü Kes ve diğer hata ayıklayıcı eylemlerini ayarlamak, performans araştırmalarınızı en uygun kod yollarına odaklamanıza yardımcı olabilir. Uygulamanız çalışırken bu eylemleri gerçekleştirmek, ilginizi çekmeyecek kodun gürültüsünü ortadan kaldırır ve bir sorunu tanılamak için gereken süreyi önemli ölçüde azaltabilir.
Bahşiş
GitHub Copilot Profiler Agent kullanarak bellek izlemelerini toplamaya ve analiz etmeye yönelik yapay zeka temelli yönergeler de alabilirsiniz.
Önemli
Hata ayıklayıcıyla tümleşik Tanılama Araçları, ASP.NET, ASP.NET Core, yerel/C++ geliştirme ve karma mod (.NET ve yerel) uygulamaları dahil olmak üzere Visual Studio .NET geliştirme için desteklenir.
Bu eğitimde öğrenecekleriniz:
- Belleğin anlık görüntülerini alma
- Bellek kullanım verilerini analiz etme
Bellek Kullanımı ihtiyacınız olan verileri vermezse, Performans Profili Oluşturucu diğer profil oluşturma araçları size yardımcı olabilecek farklı türde bilgiler sağlar. Çoğu durumda, uygulamanızın performans sorunu CPU, işleme kullanıcı arabirimi veya ağ isteği süresi gibi belleğinizden başka bir şeyden kaynaklanabilir.
Not
Özel Ayırıcı Desteği Yerel bellek profil oluşturucusu, çalışma zamanında ortaya çıkan ETW olay verilerini toplayarak çalışır. Ayırma verilerinin yakalanabilmesi için CRT ve Windows SDK'daki ayırıcılara kaynak düzeyinde açıklama eklenmiştir. Kendi ayırıcılarınızı yazıyorsanız, myMalloc için bu örnekte görüldüğü gibi yeni ayrılan yığın belleğine işaretçi döndüren tüm işlevler __declspec(ayırıcı) ile donatılabilir:
__declspec(allocator) void* myMalloc(size_t size)
Bellek kullanım verilerini toplama
hata ayıklamak istediğiniz project Visual Studio açın ve uygulamanızda bellek kullanımını incelemeye başlamak istediğiniz noktada bir kesme noktası ayarlayın.
Bellek sorunundan şüphelendiğiniz bir alanınız varsa, bellek sorunu oluşmadan önce ilk kesme noktasını ayarlayın.
Bahşiş
Uygulamanız sık sık bellek ayırıp ardından bellek ayırmayı bıraktığında, ilginizi çeken bir işlemin bellek profilini yakalamak zor olabileceğinden, belleğin değiştiği noktayı tam olarak bulmak için işlemin başında ve sonunda kesme noktaları ayarlayın veya işlemde adım adım ilerleyin.
Analiz etmek istediğiniz işlevin veya kod bölgesinin sonunda (veya şüpheli bir bellek sorunu oluştuktan sonra) ikinci bir kesme noktası ayarlayın.
Tanılama Araçları penceresi, siz kapatmadığınız sürece otomatik olarak görüntülenir. Pencereyi yeniden açmak için Hata AyıklamaWindowsTanılama Araçlarını Gösteröğesine tıklayın.
Araç çubuğundaki Araçları Seç ayarıyla Bellek Kullanımı seçin.
Araçları Seç açılan listesinde Bellek Kullanımı aracının seçili olduğu Tanılama Araçları penceresinin ekran görüntüsü.
Araçları Seç açılan listesinde Bellek Kullanımı aracının seçili olduğu Tanılama Araçları penceresinin ekran görüntüsü.
Hata Ayıklama / Hata Ayıklamayı Başlat (veya araç çubuğunda Başlat veya F5'e) tıklayın.
Uygulamanın yüklenmesi tamamlandığında Tanılama Araçları'nın Özet görünümü görüntülenir.
Bellek Kullanımı zaman çizelgesi grafiğini ve işlem bellek grafiğini gösteren Tanılama Araçları Özeti sekmesinin ekran görüntüsü.
Not
Bellek verilerini toplamak yerel veya karma mod uygulamalarınızın hata ayıklama performansını etkileyebileceğinden, bellek anlık görüntüleri varsayılan olarak devre dışı bırakılır. Yerel veya karma modlu uygulamalarda anlık görüntüleri etkinleştirmek için bir hata ayıklama oturumu başlatın (Kısayol tuşu: F5). Tanılama Araçları penceresi görüntülendiğinde, Bellek Kullanımı sekmesini seçin ve sonra yığın profil oluşturma seçin.
Yerel veya karma modlu uygulamalar için anlık görüntüleri etkinleştirmek için Yığın Profili Oluşturma düğmesinin vurgulandığı Bellek Kullanımı araç çubuğunun ekran görüntüsü.
Durdur (Kısayol tuşu: ShiftF5) ve hata ayıklamayı yeniden başlatın.
Bellek Kullanımı zaman çizelgesi grafiğini ve işlem bellek grafiğini gösteren Tanılama Araçları Özeti sekmesinin ekran görüntüsü.
Not
Bellek verilerini toplamak yerel veya karma mod uygulamalarınızın hata ayıklama performansını etkileyebileceğinden, bellek anlık görüntüleri varsayılan olarak devre dışı bırakılır. Yerel veya karma modlu uygulamalarda anlık görüntüleri etkinleştirmek için bir hata ayıklama oturumu başlatın (Kısayol tuşu: F5). Tanılama Araçları penceresi görüntülendiğinde, Bellek Kullanımı sekmesini seçin ve sonra yığın profil oluşturma seçin.
Yerel veya karma modlu uygulamalar için anlık görüntüleri etkinleştirmek için Yığın Profili Oluşturma düğmesinin vurgulandığı Bellek Kullanımı araç çubuğunun ekran görüntüsü.
Durdur (Kısayol tuşu: ShiftF5) ve hata ayıklamayı yeniden başlatın.
Hata ayıklamaya başlamak için, Bellek Kullanımı özet araç çubuğunda Anlık Görüntü Al seçeneğini seçin. (Burada bir kesme noktası ayarlamak da yardımcı olabilir.)
Anlık Görüntü Al düğmesini içeren Bellek Kullanımı özet araç çubuğunun ekran görüntüsü.
Bahşiş
Bellek karşılaştırmaları için bir temel oluşturmak için hata ayıklama oturumunuzun başlangıcında bir anlık görüntü almayı göz önünde bulundurun.
İlk durdurma noktanıza ulaşılmasını sağlayacak senaryoyu çalıştırın.
Hata ayıklayıcı ilk kesme noktasında duraklatıldığında, Bellek Kullanımı özet araç çubuğunda Anlık görüntü al seçeneğini seçin.
Uygulamayı ikinci kesme noktanızda çalıştırmak için F5 basın.
Şimdi bir anlık görüntü daha alın.
Bu noktada verileri analiz etmeye başlayabilirsiniz.
Veri toplama veya görüntüleme konusunda sorun yaşıyorsanız profil oluşturma hatalarını giderme ve sorunları düzeltme bakın.
Bellek kullanım verilerini analiz etme
Bellek Kullanımı özet tablosunun satırları, hata ayıklama oturumu sırasında almış olduğunuz anlık görüntüleri listeler ve daha ayrıntılı görünümlere bağlantılar sağlar.
Nesneler, Yığın Boyutu ve aralarındaki farklar için sütunlar içeren iki anlık görüntüyü gösteren Bellek Kullanımı özet tablosunun ekran görüntüsü.
Sütunun adı, proje özelliklerinde seçtiğiniz hata ayıklama moduna bağlıdır: .NET, yerel veya karma (hem .NET hem de yerel).
Objects (Diff) (.NET) veya Allocations (Diff) (C++) sütunu, anlık görüntü alındığında .NET veya yerel bellekteki nesne sayısını görüntüler.
Heap Size (Diff) sütunu .NET ve yerel yığınlardaki bayt sayısını görüntüler
Birden çok anlık görüntü aldığınızda, özet tablosunun hücreleri satır anlık görüntüsü ile önceki anlık görüntü arasındaki değerdeki değişikliği içerir.
Bellek kullanımını analiz etmek için, ayrıntılı bir bellek kullanımı raporu açan bağlantılardan birine tıklayın:
- Geçerli anlık görüntü ile önceki anlık görüntü arasındaki farkın ayrıntılarını görüntülemek için, okun solundaki değişiklik bağlantısını seçin (Bellek Kullanımı ArtışıBellek Kullanımı Artışı). Kırmızı ok bellek kullanımındaki artışı, yeşil ok ise azalmayı gösterir.
Bahşiş
Bellek sorunlarının daha hızlı tanımlanmasına yardımcı olmak için fark raporları, genel sayı olarak en çok artan (Nesneler (Fark) sütunundaki değişiklik bağlantısına tıklayın) veya genel yığın boyutunda en fazla artış gösteren nesne türlerine göre sıralanır (Yığın Boyutu (Fark) sütunundaki değişiklik bağlantısına tıklayın).
Yalnızca seçili anlık görüntünün ayrıntılarını görüntülemek için, değiştirilmeyen bağlantıya tıklayın.
Rapor ayrı bir pencerede görüntülenir.
Yönetilen türler 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ü.Yönetilen tür raporu
Not
.NET kodu için View Details simgesi (
) yalnızca hata ayıklayıcı ile tümleşik Bellek Kullanımı aracı kullanılırken veya bir heap anlık görüntüsü açıp Yönetilen Belleği Hata Ayıkla seçtiğinizde kullanılabilir.
Üst bölmede, anlık görüntüdeki türlerin sayısı ve boyutu gösterilir, bu sayıya türün başvuru yaptığı tüm nesnelerin boyutu da dahildir (Kapsayıcı Boyut).
Alt bölmedeki Kök Ağacına Giden Yollar, ü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ü.Yönetilen tür raporu
Not
.NET kodu için View Instances simgesi (
) yalnızca hata ayıklayıcı ile tümleşik Bellek Kullanımı aracı kullanırken veya heap anlık görüntüsü açıp Yönetilen Bellekte Hata Ayıkla'yı seçtiğinizde kullanılabilir.
Üst bölmede, anlık görüntüdeki türlerin sayısı ve boyutu gösterilir, bu sayıya türün başvuru yaptığı tüm nesnelerin boyutu da dahildir (Kapsayıcı Boyut).
Alt bölmedeki Kök Ağacına Giden Yollar, üst bölmede seçilen türe başvuran nesneleri görüntüler. .NET ortamında çöp toplayıcı, yalnızca nesneye atıfta bulunan son veri türü veya sınıf 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.
Başvurulan Türler ağacı, üst bölmede seçilen tür tarafından tutulan başvuruları görüntüler.
Başvurulan Nesneler raporunun ekran görüntüsü.
Başvurulan Türler ağacı, üst bölmede seçilen tür tarafından tutulan başvuruları görüntüler.
Başvurulan Nesneler raporunun ekran görüntüsü.
Seçili türün örneklerini üst bölmede görüntülemek için nesne türünün yanındaki Ayrıntıları Görüntüle simgesine tıklayın.
Bellek Kullanımı aracındaki Örnekler görünümünün ekran görüntüsü. Bellek Kullanımı aracındakiÖrnekleri görünümü
Örnekleri görünümü, üst bölmedeki anlık görüntüde seçili nesnenin örneklerini görüntüler. Kök Yolları ve Başvurulan Nesneler bölmesi, seçilen örneğe başvuran nesneleri ve seçilen örneğin referans verdiği türleri görüntüler. Hata ayıklayıcısı anlık görüntünün alındığı noktada durdurulduğunda, nesnenin değerlerini bir ipucunda görüntülemek için Değer hücresinin üzerine gelebilirsiniz.
Seçili bir türün örneklerini üst bölmede görüntülemek için nesne türünün yanındaki Örnekleri Görüntüle simgesine tıklayın.
Bellek Kullanımı aracındaki Örnekler görünümünün ekran görüntüsü. Bellek Kullanımı aracındakiÖrnekleri görünümü
Örnekleri görünümü, üst bölmedeki anlık görüntüde seçili nesnenin örneklerini görüntüler. Kök Yolları ve Başvurulan Nesneler bölmesi, seçilen örneğe başvuran nesneleri ve seçilen örneğin referans verdiği türleri görüntüler. Hata ayıklayıcısı anlık görüntünün alındığı noktada durdurulduğunda, nesnenin değerlerini bir ipucunda görüntülemek için Değer hücresinin üzerine gelebilirsiniz.
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 ve Yinelenen dizeler, Seyrek dizilerve Olay işleyici 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ü görünümü
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ü görünümü
Yinelenen Dizeler bölümü, yığında birden çok kez ayrılan dizelerin listesini gösterir. Buna ek olarak, bu bölümde toplam boşa harcanan bellek, yani (örnek sayısı - 1) çarpı dize boyutu, gösterilir.
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ı aboneye göre daha uzun süre yaşıyorsa, başka bir referans olmasa bile 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ü.
Değişiklik (Diff) raporları
Tanılama Araçları penceresindeki Bellek Kullanımı sekmesinin özet tablosunun hücresindeki değişiklik bağlantısını seçin.
Anlık görüntü hücresinde değişiklik bağlantısının vurgulandığı Bellek Kullanımı özet tablosunun ekran görüntüsü.
Yönetilen veya yerel raporun Karşılaştır listesinden bir anlık görüntü seçin.
Bellek Kullanımı raporundaki Karşılaştır açılır listesinin ekran görüntüsü, karşılaştırma için kullanılabilir anlık görüntüleri gösteriyor.
Bellek Kullanımı raporundaki Karşılaştır açılır listesinin ekran görüntüsü, karşılaştırma için kullanılabilir anlık görüntüleri gösteriyor.
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ü farklılık raporu işte bö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, anlık görüntüdeki türlerin sayısı ve boyutu gösterilir, bu sayıya türün başvuru yaptığı tüm nesnelerin boyutu da dahildir (Kapsayıcı Boyut).
Bloglar ve videolar
Hata Ayıklarken CPU ve Belleği Analiz Etme
Visual C++ Blogu: Visual C++ 2015'te Bellek Profili Oluşturma
Sonraki adımlar
Bu öğreticide, hata ayıklama sırasında bellek kullanım verilerini toplamayı ve çözümlemeyi öğrendiniz. Önerilen bazı sonraki adımlar şunlardır:
- Yayın derlemelerindeki bellek kullanımını analiz etmek için bkz. Performans Profili Oluşturucu'da bellek kullanımını analiz etme.
- Profil oluşturma araçlarını kullanarak kodu iyileştirmeye yönelik genel bir yaklaşım öğrenmek için bkz . Örnek olay incelemesi: Kodu iyileştirmeye yönelik başlangıç kılavuzu.
- Yapay zeka temelli profil oluşturma yönergelerini almak için bkz. Profil uygulamanızı GitHub Copilot Profiler Agent ile oluşturun.
- Tüm profil oluşturma araçlarına genel bakış için bkz. Profil oluşturma araçlarına ilk bakış.