我们有一个相当大的Silverlight 4应用程序。我们正在查找应用程序中的内存泄漏,这已经变成了一项艰巨的任务。
对于那些看过原始帖子的人来说,情况已经完全改变了!
我意识到ANTS内存分析器没有显示正确的内容。那是因为内存泄漏不在托管代码中,而在本地代码中。我确实修复了一些ANTS的问题 - 它是一个用于托管代码内存泄漏的好工具。
所以我找到了这个博客,
在这个“Render”方法中,它会分配大约520字节的内存,据我所知它并没有释放。我还看到一个名为的方法或类。
对于那些看过原始帖子的人来说,情况已经完全改变了!
我意识到ANTS内存分析器没有显示正确的内容。那是因为内存泄漏不在托管代码中,而在本地代码中。我确实修复了一些ANTS的问题 - 它是一个用于托管代码内存泄漏的好工具。
所以我找到了这个博客,
这很棒。我使用xPerf和xPerfViewer来查看本机堆栈,并发现了我怀疑的内存泄漏。
因此,我可以看到一个堆栈跟踪,看起来像这样:
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
内存泄漏也是一个问题。
有趣的是,好像我找到了什么,但我并不确定是什么。
还有其他建议吗?
谢谢。