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

  1. 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).

  2. Çö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.

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

  4. Araç çubuğundaki araçları seç ayarıyla bellek kullanımı ' nı seçin.

    Tanılama araçlarını göster

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

    Tanılama araçları Özet sekmesi

    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.

    Anlık görüntüleri etkinleştir

    Durdur (kısayol tuşu: SHIFT + F5) ve hata ayıklamayı yeniden Başlat.

  6. 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.)

    Anlık görüntü al

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

  7. İlk kesme noktasının isabet çekmesine neden olacak senaryoyu çalıştırın.

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

  9. Uygulamanızı ikinci kesme noktasına çalıştırmak için F5 tuşuna basın.

  10. Ş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.

Bellek Özet tablosu

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 (bellek kullanımı artışı). 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.

Hata ayıklayıcı yönetilen tür raporu -, köke yönelik yollar

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

Yönetilen başvurulan nesneler rapor görünümü

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

örnek bölmesini ve kök ve başvurulan nesneler bölmesine yönelik yolları gösteren Visual Studio bellek kullanımı aracındaki örnekler görünümünün ekran görüntüsü.

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

Yerel tür görünümü

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 (nesne türü sütunundaki örnek simgesi) 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.

    örnekler bölmesinin ve ayırma çağrı yığını bölmesinin gösterildiği Visual Studio bellek kullanımı aracındaki örnekler görünümünün ekran görüntüsü.

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

    Yığınlar görünümü

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.

    Bir değişiklik (fark) raporu seçin

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

    Karşılaştırılacak listeden 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:

Yerel türler fark görünümü

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.