如何在Visual Studio中读取内存快照

n17*_*911 17 c# memory-leaks visual-studio

我使用Visual Studio获取应用程序的内存快照.

我对理解我得到的数据有一些疑问.我捕获内存快照后,我过滤掉了我的一个类,比如MyClassPanel.我只在我的xmal文件中使用MyClassPanel.

  1. 为什么MyClassPanel的'Roots to Path'都是'MyClassPanel [RefCount Handle,Count:1]'?(即同名,但带有字符串[最后的RefCount句柄]和不同的Count值)这是什么意思?在其他类中,我过滤,我看到'Paths to Root'是不同的类名.

  2. 我有24个MyClassPanel(来自顶部表中的计数).在底部表格的"参考计数"列中,当我添加它们时,它们是24.

总是这样吗?我认为'Count'和'Reference Count'意味着不同的东西.在这种情况下,他们加起来.这有意义吗?

在此输入图像描述

Rol*_*man 6

  1. "根路径路径"视图显示对此类型的引用,使其不会被垃圾回收.由于您的类是Xaml页面,因此保持类活动的引用是Xaml页面的CLR处理程序.这些显示为RefCount Handle.

  2. 计数和引用计数确实不一样.Count是实例数,引用计数引用数.因为您的案例中的每个实例只有一个引用,所以它们加起来是有道理的.

欲了解更多信息: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