我们有一个相当大的 silverlight 4 应用程序。我们正在寻找应用程序中的内存泄漏,这已成为一项艰巨的任务。
对于那些看过原帖的人来说,这一篇完全改变了!
我意识到 ANTS 内存分析器没有向我显示正确的内容。那是因为内存泄漏不在托管代码中,而是在 native 代码中。我确实修复了 ANTS 的一些问题 - 它是解决托管代码内存泄漏的好工具。
所以我找到了这个博客,
非常棒。我使用 xPerf 和 xPerfViewer 查看 native 堆并查看我怀疑的实际内存泄漏。
所以我可以看到如下所示的堆栈跟踪,
CCoreServices::Draw
CCoreServices::Tick
CUElement::Render
CUIElement::Render
CUIElement::RenderWithTransform
CUIElement::RenderVisual
CUIElement::RenderChildren
{Repeat of the above in a recursive fashion}
所以在这个“Render”方法中,它在某个地方分配了大约 520 字节的内存,据我所知,它并没有释放它。
我还可以看到一个名为
的方法或类SDBitmapCreate
也在泄漏内存。
很有趣,因为我好像找到了什么,但我不太确定是什么。
还有什么建议吗?
谢谢。
最佳答案
这里有一个很好的解决 Silverlight 内存泄漏问题的教程:http://davybrion.com/blog/2009/08/finding-memory-leaks-in-silverlight-with-windbg/ .它很复杂,而且您必须处理 WinDBG 命令,但我发现它在过去很有用。当然,这并不能具体回答您的问题,但它可能会为您指明正确的方向。
关于c# - Silverlight 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4403641/