Silverlight内存泄漏

我们有一个相当大的silverlight 4应用程序。我们正在寻找应用程序中的内存泄漏,这已经变成了一项艰巨的任务。 对于那些看过原帖的人来说,事情已经彻底改变了! 我意识到ANTS内存分析器并没有向我展示正确的东西。那是因为内存泄漏不在托管代码中,而是在本机代码中。我确实解决了ANTS的一些问题 - 它是托管代码内存泄漏的好工具。 所以我找到了这个博客, http://blogs.msdn.com/b/slperf/archive/2010/08/19/analyzing-silverlight-memory-usage-part-1-obtaining-measurements.aspx 哪个很棒。我使用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
也在泄漏记忆。 有意思,因为我似乎找到了什么,但我不确定是什么。 还有其他建议吗? 谢谢。     
已邀请:
这里有一个关于解决Silverlight内存泄漏问题的好教程:http://davybrion.com/blog/2009/08/finding-memory-leaks-in-silverlight-with-windbg/。它很复杂,你必须处理WinDBG命令,但我发现它在过去很有帮助。当然,这并没有具体回答你的问题,但它可能会指出你正确的方向。     
首先,我不知道Silverlight的任何内存泄漏工具。 我几周前经历了我认为内存泄漏问题。原来我的Silverlight应用程序在画布上有流氓儿童。 我的问题可能不是你的问题,但它可能会让你思考。 在我使用服务器的结果重新填充列表之前,我必须从适当的画布中删除所有子项。清除列表是不够的:
        for (int i = 0; i < boxDataLabel.Count; i++)
        {
            canvaz.Children.Remove((Label)boxDataLabel[i]);
        }
        boxDataLabel.Clear();
boxDataLabel是Label类型的列表。 祝好运。     
关于Xaml中内联DataTemplates的官方内存泄漏。你可以在这里阅读一个关于它的主题:http://forums.silverlight.net/forums/t/171739.aspx。 Microsoft发布了一个服务版本(更新版本为4.0.50826.0),可以解决此问题:http://timheuer.com/blog/archive/2010/09/01/silverlight-service-release-september-2010-gdr1。 ASPX 如果服务版本修复(部分)您的问题,请记住更新主机html文件中的最低版本。     
如果我在你的情况下,我会尝试创建一个简单的测试应用程序来演示泄漏,只是仔细检查它是否可以在您的实际代码之外重复。这证明它不是代码中的细微错误。然后,我会将测试应用程序发布到MS Silverlight论坛,该论坛由MS人员监控。如果您有MSDN订阅,或者您的公司与MS签订了支持协议,我也会打开一张“票”(忘记他们实际上称之为他们的话)。     

要回复问题请先登录注册