什么是[周期检测]内存泄漏?

Ala*_*yne 15 memory-leaks performance-testing visual-studio

Visual Studio 2017社区版

我试图了解/使用Performance Profiler的内存使用情况,我认为应用程序中的内存泄漏(带有自定义控件的MVVM).拍摄了三个快照:

  1. 在打开我的可疑用户控件之前,NewProgressNoteView.xaml.
  2. 在运行用户控件时,和
  3. 退出NewProgressNoteView.xaml后.

然后我将快照#3与快照#1进行了比较.在结果表中,我强加了一个"NewProgressNoteView"的过滤器.以下是扩展顶级Doctor_Desk.Views.NewProgressNoteView实例的结果.值得注意的是'[检测到周期]感觉可疑,但我不知道它究竟意味着什么,或者如何使用这些信息来修复内存泄漏?接下来我该怎么办?

非常感激任何的帮助.

TIA.

在此输入图像描述

小智 23

查看托管内存时[循环检测]是什么?

在Visual Studios诊断工具中查看堆快照时,您有:

对象类型窗口,显示内存中保存的对象.

选择特定的对象类型时,可以访问:

  • Root的路径 - 不要被这个信息呈现在树视图中的事实所欺骗,树视图通常表示孩子.root的路径实际上显示了引用所选对象的Parent对象.
  • 引用的类型 - 显示所选对象引用的子类型.

这两个选项卡都是引用视图,可帮助您跟踪通过扩展树菜单显示的父对象和子引用对象.

循环检测 只是意味着内存分析器已找到父或子引用直接或间接引用回所选对象.因此,不是显示圆形树视图跟踪,而是添加循环检测标记.

这不是一件坏事或根本问题.

有关分析内存和参考视图的扩展说明的进一步阅读,请查看这篇msdn文章:https://msdn.microsoft.com/en-us/library/dn342825.aspx#Analyze%20memory%20use