Visual Studio’da bellek kullanımını ölçme
Hata ayıklayıcı ile tümleşik bellek kullanımı Tanılama aracı ile hata ayıklarken bellek sızıntılarını ve verimsiz belleği bulun. Bellek kullanımı aracı, nesne türlerinin bellek kullanımının 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üsünü almanızı sağlar. Ayrıca, bir hata ayıklayıcı ekli veya çalışan bir uygulamayı hedefleyerek bellek kullanımını çözümleyebilirsiniz. Daha fazla bilgi için bkz. hata ayıklayıcı ile veya olmayan profil oluşturma araçlarını çalıştırma.
bellek kullanım aracında istediğiniz zaman bellek anlık görüntülerini toplayabilmenize karşın, performans sorunlarını araştırırken uygulamanızın nasıl yürütüldüğünü denetlemek için Visual Studio hata ayıklayıcıyı kullanabilirsiniz. Kesme noktaları, Adımlama, tümünü Böl ve diğer hata ayıklayıcı eylemlerinin ayarlanması, performans araştırmalarınızın en ilgili kod yollarına odaklanmasına yardımcı olabilir. Uygulamanız çalışırken bu eylemlerin gerçekleştirilmesi, sizi ilgilendiremeyen koddan paraziti ortadan kaldırabilir ve bir sorunu tanılamak için gereken süreyi önemli ölçüde azaltabilir.
Önemli
hata ayıklayıcı ile 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ştirmesi için desteklenir. hata ayıklayıcı (Tanılama Araçları penceresi) ile profil oluşturma araçlarını çalıştırmak için Windows 8 ve üzeri gereklidir.
Bu öğreticide şunları yapacaksınız:
- Belleğin anlık görüntülerini al
- Bellek kullanım verilerini analiz etme
Bellek kullanımı size ihtiyacınız olan verileri sağlamıyorsa, performans Profiler 'daki diğer profil oluşturma araçları sizin için yararlı 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ğinizin dışında bir şey olabilir.
Not
Özel ayırıcı desteği Yerel bellek profili Oluşturucu çalışma zamanında yayılan ayırma ETW olay verileri toplanarak çalışır. CRT ve Windows SDK ayırıcıları, ayırma verilerinin yakalanabilmesi için kaynak düzeyinde açıklanmalıdır. Kendi ayırıcılarınızı yazıyorsanız, yeni ayrılan yığın belleğine bir işaretçi döndüren işlevler, myMalloc için bu örnekte görüldüğü gibi __declspec(ayırıcı) ile birlikte kullanılabilir.
__declspec(allocator) void* myMalloc(size_t size)
Bellek kullanım verilerini topla
Visual Studio hata ayıklamak istediğiniz projeyi açın ve uygulamanızda, bellek kullanımını incelemeyi başlatmak istediğiniz noktada bir kesme noktası ayarlayın.
Bellek sorunuyla şüphelendiğiniz bir alana sahipseniz, ilk kesme noktasını bellek sorunu gerçekleşmeden önce ayarlayın.
İpucu
Uygulamanız sıklıkla bellek ayırdığında ve serbest bırakıldığı zaman sizi ilgilendiren bir işlemin bellek profilini yakalamak zor olabileceğinden, belleğin değiştiği kesin noktasını bulmak için işlemin başlangıcında ve sonunda kesme noktaları ayarlayın (veya işlem boyunca ilerleyin).
Çözümlemek istediğiniz işlevin veya kod bölgesinin sonunda (veya bir şüpheli bellek sorunu oluştuktan sonra) ikinci bir kesme noktası ayarlayın.
Tanılama araçları penceresi devre dışı bırakılmadığı takdirde otomatik olarak görünür. pencereyi yeniden getirmek için hata ayıkla > Windows > Tanılama Araçları göster' e tıklayın.
Araç çubuğundaki araçları seç ayarıyla bellek kullanımı ' nı seçin.

Hata Ayıkla/hata ayıklamayı Başlat (ya da araç çubuğundan başla ya da F5) seçeneğine tıklayın.
Uygulamanın yüklenmesi bittiğinde, tanılama araçlarının Özet görünümü görüntülenir.

Not
Bellek verileri toplama, yerel veya Karma modlu uygulamalarınızın hata ayıklama performansını etkileyebileceğinden, bellek anlık görüntüleri varsayılan olarak devre dışıdır. Yerel veya karma moddaki 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ündüğünde bellek kullanımı sekmesini seçin ve ardından yığın profili oluşturma' yı seçin.

Durdur (kısayol tuşu: SHIFT + F5) ve hata ayıklamayı yeniden Başlat.
Hata ayıklama oturumunuzun başlangıcında bir anlık görüntü almak için bellek kullanımı Özeti araç çubuğundan anlık görüntü al ' ı seçin. (Burada bir kesme noktası ayarlamaya da yardımcı olabilir.)

İpucu
Bellek karşılaştırmaları için bir taban çizgisi oluşturmak üzere hata ayıklama oturumunuzun başlangıcında bir anlık görüntü almayı düşünün.
İlk kesme noktasının isabet çekmesine neden olacak senaryoyu çalıştırın.
Hata ayıklayıcı ilk kesme noktasında duraklatıldığında, bellek kullanımı Özeti araç çubuğundan anlık görüntü al ' ı seçin.
Uygulamanızı ikinci kesme noktasına çalıştırmak için F5 tuşuna basın.
Şimdi başka bir anlık görüntü alın.
Bu noktada, verileri çözümlemeye başlayabilirsiniz.
Bellek kullanım verilerini analiz etme
Bellek kullanımı Özet tablosunun satırları, hata ayıklama oturumu sırasında yaptığınız anlık görüntüleri listeler ve daha ayrıntılı görünümlere bağlantılar sağlar.

Sütunların adı, proje özelliklerinde seçtiğiniz hata ayıklama moduna bağlıdır: .NET, Native veya Mixed (hem .NET hem de native).
Nesneler (fark) ve ayırmalar (fark) sütunları, anlık görüntü çekilirken .net ve yerel bellekteki nesne sayısını görüntüler.
Yığın boyutu (fark) 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ü ve önceki anlık görüntü arasındaki değer değişikliğini içerir.
Bellek kullanımını analiz etmek için, ayrıntılı bellek kullanımı raporunu açan bağlantılardan birine tıklayın:
- Geçerli anlık görüntü ve önceki anlık görüntü arasındaki farkın ayrıntılarını görüntülemek için okun sol tarafında bulunan değişiklik bağlantısını seçin (
). Kırmızı ok, bellek kullanımının artışını ve bir azalma belirten yeşil oku gösterir.
İpucu
Bellek sorunlarını daha hızlı belirlemesine yardımcı olmak için, fark raporları genel olarak en çok (nesnelerde değişiklik bağlantısı (diff) sütununda) artan nesne türlerine göre sıralanır veya genel yığın boyutunun en çok artması ( yığın boyutu (fark) sütunundaki bağlantıyı değiştirin).
Yalnızca seçili anlık görüntünün ayrıntılarını görüntülemek için, değişiklik olmayan bağlantısına tıklayın.
Rapor ayrı bir pencerede görüntülenir.
Yönetilen türler raporları
Bellek kullanımı Özet tablosunda bir nesneler (fark) veya ayırmalar (fark) hücresinin geçerli bağlantısını seçin.

Üstteki bölmede, tür tarafından başvurulan tüm nesnelerin boyutu da dahil olmak üzere anlık görüntüdeki türlerin sayısı ve boyutu gösterilir (kapsamlı boyut).
Alt bölmedeki kök ağacın yolları , üst bölmede seçilen türe başvuran nesneleri görüntüler. .NET atık toplayıcısı, yalnızca kendisine başvuran son tür serbest bırakıldığında bir nesne için belleği temizler.
Başvurulan nesneler ağacı, üst bölmede seçilen tür tarafından tutulan başvuruları görüntüler.

Sol bölmede seçilen bir türün örneklerini göstermek için
simgesini seçin.

Örnekler görünümü, alt görüntüdeki seçili nesnenin örneklerini üst bölmede görüntüler. Kök ve başvurulan nesneler için yollar bölmesi, seçilen örneğe ve seçili Örneğin başvurduğu türlere başvuran nesneleri görüntüler. Hata ayıklayıcı anlık görüntünün alındığı noktada durdurulduğunda, bir araç ipucunda nesnenin değerlerini göstermek için değer hücresinin üzerine gelin.
Yerel tür raporları
Tanılama araçları penceresinin bellek kullanım Özeti tablosunda bir ayırma (fark) veya yığın boyutu (fark) hücresinin geçerli bağlantısını seçin.

Türler görünümü anlık görüntüdeki türlerin sayısını ve boyutunu görüntüler.
Seçilen bir türün nesneleri hakkındaki bilgileri göstermek için örnekler simgesini (
) seçin.Örnekler görünümü seçili 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ına neden olan çağrı yığını görüntülenir.

Seçili türe ait ayırma yığınını görmek için, görünüm modu listesinde yığınlar görünümü ' ne tıklayın.

Değişiklik (fark) raporları
Tanılama araçları penceresindeki bellek kullanımı sekmesinin Özet tablosunun Özet tablosunun bir hücresinde bağlantıyı değiştir ' i seçin.

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

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

Blogların ve videoların
Hata ayıklarken CPU ve belleği çözümleme
Visual C++ blog: Visual C++ 2015 ' de bellek profili oluşturma
Sonraki adımlar
Bu öğreticide, bellek kullanım verilerini nasıl toplayacağınızı ve analiz edeceğinizi öğrendiniz. Profil oluşturucunun turunazaten tamamladıysanız, uygulamalarınızda CPU kullanımını çözümleme hakkında hızlı bir bakış almak isteyebilirsiniz.