我使用Visual Studio拍摄应用程序的内存快照。

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

  • 为什么MyClassPanel的“根目录路径”都是“MyClassPanel [RefCount Handle,Count:1]”? (即,名称相同,但字符串[RefCount Handle末尾]和不同的Count值)是什么意思?在其他类(class)中,我进行了过滤,我看到“通往根的路径”是不同的类(class)名称。
  • 我有24个MyClassPanel(从顶部表中的计数开始)。在底表的“引用计数”列中,当我将它们加起来时,它们就是24。

  • 总是这样吗?我认为“计数”和“引用计数”的含义不同。在这种情况下,它们加起来。这有意义吗?

    最佳答案

  • “通往根的路径” View 显示对此类型的引用,以防止被垃圾回收。由于您的类是Xaml页面,因此使该类保持 Activity 状态的引用是Xaml页面的CLR处理程序。这些显示为RefCount句柄。
  • 计数和引用计数确实不同。 Count是实例数,引用数是引用数。因为在您的情况下,每个实例只有一个引用,所以它们加起来是有意义的。

  • 有关更多信息:
  • https://devblogs.microsoft.com/devops/using-visual-studio-2013-to-diagnose-net-memory-issues-in-production/
  • https://docs.microsoft.com/visualstudio/profiling/analyze-memory-usage
  • https://docs.microsoft.com/visualstudio/profiling/memory-usage
  • 关于c# - 如何在Visual Studio中读取内存快照,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30673405/

    10-11 16:09