垃圾收集器(GC)不会清理我的ViewModel

时间:2015-09-18 12:47:57

标签: wpf garbage-collection

我有一个特定视图模型的多个实例。这个viewmodel有一个我创建的videoPlayer的对象,以及事件处理程序(propertychanged等)。

我意识到查看性能监视器,当我创建新实例时,私有内存会上升。但是当我关闭那个视图模型(删除我在其他类中为他们提供的引用)时,内存仍然很高。

我做了一个堆内存转储,看看GC为什么不清理它们,我看到了事件处理程序。好吧,我做了一个取消注册它们的方法,看到了内存堆发生了什么,视图模型仍然存在,但事件处理程序引用了dissapear。 所以我不知道viewModel的哪些实例仍然存在。 从Paths to Root选项(我看到对事件处理程序的引用)现在我只看到循环依赖项。我能搜索什么东西? 对于没有videoPLayer对象的其他viewModel,当我删除eventHandlers时,GC会清理它们。

所以我觉得那个对象会发生一些事情。我不会在Path To Root中看到任何东西。

0 个答案:

没有答案