我正在使用以下内容:VS 2010,.Net 4,WPF和.Net Memory Profiler版本4.6.40.0 Pro。它们都运行在Win7 64位上。我一直在使用.Net Memory Profiler来追踪内存泄漏,发现一个我不明白的东西,即使我似乎修复了它。我们有一个包含三个ContentPresenter对象的控件。如果我在Cleanup方法中将ContentPresenter对象的Content属性设置为null,则控件根本不会泄漏。如果我没有取消内容属性,我们会发生大量泄漏(每次测试大约3.5 MB)。
我在Google搜索中看到的结果似乎没有直接解决这个问题。 ContentPresenter的文档也没有帮助我。有没有人在这里理解为什么归零内容修复泄漏?有没有更好的方法来完成同样的事情?
我会注意到其中一个ContentPresenter是在WindowsFormsHost和BitmapSource之间动态切换来处理空域问题。
更新:以下是清理的相关部分:
首先,取消ContentPresenter的
AddressGridPlaceholder.Content = null;
AddressFormPlaceholder.Content = null;
MapControlPlaceholder.Content = null;
然后清理WindowsFormsHost
if (_hoster != null)
{
_hoster.Child = null; // Remove the map control reference first
_hoster.Dispose(); // Then Dispose
}
答案 0 :(得分:0)
为什么看起来你没有使用控制绑定。手动玩这些东西并不好。