我已经阅读了很多关于这个主题的内容,但我仍然没有明确的路径如何继续。任何人都可以指向一些资源(或解释),详细说明如何找到未调用某些对象 dctor 的原因。
基本上我测试泄漏的逻辑是这样的(WPF应用程序):
- 创建一些视图/视图模型
- 关闭视图
- 调用 GC.Collect()
几秒钟后,通常会调用 ViewModel 类的 dctor,但在我的应用程序上从未调用过。我想知道当时哪个对象持有对它的引用,因为我认为这是找到内存泄漏原因的方法。
这些类不使用任何非托管资源,也没有IDisposable
实现,这意味着没有 SupressFinalize 调用来阻止析构函数的执行。
编辑:通过 ViewModelLocator 上的静态属性检索 ViewModel,并添加 List。这是 TabControl 所要求的,它需要绑定到视图模型的集合。View 和 ViewModel 通过 DataTemplate 连接。