我有一个Silverlight4应用程序,它有一个泄漏的ViewModel类。我已经通过在我的ViewModel类型上使用WinDbg和!gcroot命令确认了这一点。我无法指出内存泄漏的确切原因,但已尝试在关闭时在相应视图中使用以下代码行来解决此问题:
HtmlPage.Window.Navigate(new Uri(MyTopLevelUri)); 这会强制应用程序重新启动,从而重新初始化RootVisual。现在,当我使用WinDbg时,我可以看到在视图关闭后没有更多的引用保留在ViewModel类上。
但是,当我监控应用程序的内存使用情况(使用SysInternals)时,它会不断增加。有时它可能会略有下降,但如果我不断打开和关闭可疑视图,我最终会得到一个超过1,000,000K的私有字节内存集。此外,即使我添加代码来强制GC,它也永远不会真正恢复所有分配的内存。我应该担心吗?
SL4和控件是否存在固有的内存泄漏?考虑到最近发布的用于修复DataTemplates (版本4.0.60129.0 http://timheuer.com/blog/)内存泄漏的修补程序,我并不是很有信心。
发布于 2011-07-04 23:02:06
看来我最初问题的答案(SL4是否存在固有的内存泄漏?)确实是这样的!
http://forums.silverlight.net/forums/t/211504.aspx
上述链接中描述的两个漏洞显然已经在SL5中修复。
https://stackoverflow.com/questions/5091636
复制相似问题