Silverlight 4内存泄漏

时间:2011-02-23 13:37:48

标签: silverlight-4.0 memory-leaks

我有一个Silverlight 4应用程序,它有一个泄漏的ViewModel类。我已经通过在我的ViewModel类型上使用WinDbg和!gcroot命令来确认这一点。我无法确定内存泄漏的确切原因,但尝试通过在关闭时使用相应视图中的以下代码行来解决它:

HtmlPage.Window.Navigate(new Uri(MyTopLevelUri));   

这会强制应用重启,因此RootVisual会重新初始化。现在,当我使用WinDbg时,我可以看到在View关闭后没有更多引用保留在ViewModel类上。

但是,当我监视应用程序的内存使用情况(使用SysInternals)时,它会不断增加。有时它可能会略有下降,但如果我继续打开和关闭嫌疑人View我最终会得到一个超过1,000,000K的私有字节内存集。此外,即使我添加代码来强制GC,它也永远不会真正恢复分配的所有内存。我应该担心吗?

SL4和控件是否存在内在的内存泄漏?鉴于最近发布的用于修复DataTemplates(版本4.0.60129.0 http://timheuer.com/blog/)内存泄漏的补丁,我没有太多信心。

1 个答案:

答案 0 :(得分:1)

看来我原来问题的答案(SL4固有的内存泄漏?)确实是的!

http://forums.silverlight.net/forums/t/211504.aspx

https://connect.microsoft.com/VisualStudio/feedback/details/649246/usercontrol-resources-memory-leak-silverlight-4-0-60129-0

上面链接中描述的两个泄漏显然已在SL5中修复。