2015-06-05 17 views
12

Uygulamamın bellek anlık görüntüsünü almak için Visual Studio'yu kullanıyorum.Visual Studio'da bellek anlık görüntüsünü okuma

Elimde olan verileri anlama hakkında bazı sorularım var. Bellek anlık görüntüsünü yakaladıktan sonra, MyClassPanel adlı sınıfımdan birini filtrelerim. MyClassPanel'i sadece xmal dosyalarında kullanırım. Tüm edilmektedir MyClassPanel için ‘Yollar Kök’

  1. neden ‘MyClassPanel [RefCount Kulp, Sayısı: 1]’? (yani aynı isim ancak sonunda [RefCount Handle] ve farklı bir Count değeri ile) bu ne anlama geliyor? Diğer sınıfta filtreler, 'Kök Yolları' nın farklı sınıf adları olduğunu görüyorum.

  2. 24 MyClassPanel'im var (üstteki sayımdan itibaren). Onları eklediğinizde alt tabloda ‘Referans Sayısı’ sütununda, bunlar 24.

her zaman böyle mi vardır? Bence "Kont" ve "Referans Sayısı" farklı şeyler ifade eder. Bu durumda, ekliyorlar. Bu mantıklı mı? görünümü Root

+0

http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/walkthrough walkthrough altında göz at Onu seni örnek tutma grafikleri gösterecektir olarak Redgate hafıza profilci hafıza sorunları izlemek için daha yararlı olduğunu tespit ettik. – CharithJ

cevap

3
  1. Yollar

    enter image description here

    çöp toplanan olmaktan tutarak bu tip başvurular gösterir. Sınıfınız bir Xaml sayfası olduğundan, sınıfı canlı tutan referans Xaml sayfası için bir CLR işleyicisidir. Bunlar RefCount Kolu olarak ortaya çıkıyor. Sayma ve referans sayısı gerçekten aynı değildir. Sayı, örnek sayısıdır, referans, referans sayısını saymaktadır. Davanızdaki her örneğin yalnızca bir referansı olduğu için, topladıkları anlam ifade eder. Daha fazla bilgi için

: http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/20/using-visual-studio-2013-to-diagnose-net-memory-issues-in-production.aspx http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/net-memory-analysis-enhancements-in-visual-studio-2013.aspx

+0

Cevabınız için teşekkür ederiz. # 1 için, her panel kendi CLR işleyicisi tarafından canlı tutuluyor mu? Veya 1 CLR işleyici, TÜM panelini canlı tutar. Ref Count işleminde 'Count' teriminin anlamı nedir? – n179911

+0

Bellek profilim için ekran görüntüsü gönderiyorum. Bir sorum var. # 2 için neden dediniz? 'Davanızdaki her bir örnek sadece bir referansa sahip olduğu için ekledikleri anlamına geliyor.'[Ref Sayım Tutarı, Sayı: 1] 'MyClass Panel' ve 'Ref Count Handle, 16: 8' referanslarım 'MyClass Panel' başlıklı 6 referansa sahip değil mi? – n179911

+0

Ref Count tutamacında "Count" teriminin anlamı, com nesnesinin referans sayımıdır (https://en.wikipedia.org/wiki/Reference_counting). Sayfanın yüklenip yüklenmediğine bağlı olarak canlı tutulur –

0

Ben Visual Studio Anlık analizörü büyük bir hayranı değilim. Anlık görüntü alınmadan önce sonlandırma düzgün şekilde yürütülmezse, oldukça az sayıda komplikasyon var. Visual Studio'nun bunu nasıl yürüttüğünden emin değilim. Ancak, sağladığınız enstantane de benim için fazla bir şey ifade etmiyor.

ANTS bellek profilleyicisini indirmenizi ve bunu araştırmanızı öneririm. Makul bir deneme süresi ile geliyor. Bunu kullanarak, her örnek için 'Tutma Grafiği' kullanarak tüm referansları görebileceksiniz. Özellikle hangi örneklerin nesneleriniz için referansı tuttuğunu gösterecektir ve ayrıca hangi nesnelere imha edildiğini gösterse de aramayı göstermez. Sanırım, bu sorunun kök nedenini bulmak için daha fazla destek sağlayacaktır.

sayfa http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

İlgili konular