什么是内存泄漏的 [Cycle Detected]?
What is [Cycle Detected] with memory leak?
Visual Studio 2017 社区版
我正在尝试 understand/use Performance Profiler 的内存使用情况,我认为这一定是我的应用程序(带有自定义控件的 MVVM)中的内存泄漏。拍摄了三张快照:
- 在打开我的可疑用户控件之前,NewProgressNoteView.xaml。
- 当时运行用户控制,
- 退出后NewProgressNoteView.xaml.
然后我将快照 #3 与快照 #1 进行了比较。在生成的 table 中,我强加了一个 "NewProgressNoteView" 的过滤器。下面是topDoctor_Desk.Views.NewProgressNoteView的实例展开后的结果。值得注意的是“[Cycle Detected]”感觉可疑,但我不知道它的确切含义或如何使用此信息来修复内存泄漏?接下来我该做什么?
如有任何帮助,我们将不胜感激。
TIA。
查看托管内存时 [Cycle Detected] 是什么?
在 Visual Studios 诊断工具中查看 堆快照 时,您有:
对象类型 Window 显示内存中保存的对象。
当您 select 特定对象类型时,您可以访问:
- 根路径 - 不要被此信息以 tree-view 形式显示的事实所迷惑,通常表示儿童。根路径实际上显示了引用您 select 编辑的对象的父对象。
- 引用类型 - 显示 selected 对象引用的子类型。
这两个选项卡都是参考视图,可帮助您跟踪通过 expanding-tree 菜单显示的对象父项和子项参考。
Cycle Detected 只是意味着内存分析器已经找到直接或间接引用回您的 selected 对象的父引用或子引用。因此,与其显示循环 tree-view 跟踪,不如添加循环检测标记。
这不一定是坏事或您的根本问题。
要进一步阅读有关分析内存和参考视图的扩展说明,请查看这篇 msdn 文章:https://docs.microsoft.com/en-us/visualstudio/profiling/analyze-memory-usage?view=vs-2019
Visual Studio 2017 社区版
我正在尝试 understand/use Performance Profiler 的内存使用情况,我认为这一定是我的应用程序(带有自定义控件的 MVVM)中的内存泄漏。拍摄了三张快照:
- 在打开我的可疑用户控件之前,NewProgressNoteView.xaml。
- 当时运行用户控制,
- 退出后NewProgressNoteView.xaml.
然后我将快照 #3 与快照 #1 进行了比较。在生成的 table 中,我强加了一个 "NewProgressNoteView" 的过滤器。下面是topDoctor_Desk.Views.NewProgressNoteView的实例展开后的结果。值得注意的是“[Cycle Detected]”感觉可疑,但我不知道它的确切含义或如何使用此信息来修复内存泄漏?接下来我该做什么?
如有任何帮助,我们将不胜感激。
TIA。
查看托管内存时 [Cycle Detected] 是什么?
在 Visual Studios 诊断工具中查看 堆快照 时,您有:
对象类型 Window 显示内存中保存的对象。
当您 select 特定对象类型时,您可以访问:
- 根路径 - 不要被此信息以 tree-view 形式显示的事实所迷惑,通常表示儿童。根路径实际上显示了引用您 select 编辑的对象的父对象。
- 引用类型 - 显示 selected 对象引用的子类型。
这两个选项卡都是参考视图,可帮助您跟踪通过 expanding-tree 菜单显示的对象父项和子项参考。
Cycle Detected 只是意味着内存分析器已经找到直接或间接引用回您的 selected 对象的父引用或子引用。因此,与其显示循环 tree-view 跟踪,不如添加循环检测标记。
这不一定是坏事或您的根本问题。
要进一步阅读有关分析内存和参考视图的扩展说明,请查看这篇 msdn 文章:https://docs.microsoft.com/en-us/visualstudio/profiling/analyze-memory-usage?view=vs-2019