我们有一个相当大的 silverlight 4 应用程序。我们正在寻找应用程序中的内存泄漏,这已经变成了一项艰巨的任务。
对于那些看过原帖的人来说,这篇文章已经完全改变了!
我意识到 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}
所以在这个“渲染”方法中,它分配了大约 520 字节的内存,据我所知,它并没有释放它。
我还可以看到一个名为的方法或类
SDBitmapCreate
也在泄漏内存。
很有趣,因为我似乎找到了一些东西,但我不确定是什么。
还有其他建议吗?
谢谢。