如何在 wp7.1 后台代理中分析内存使用情况



我正在为芒果(7.1)开发预定的后台代理

我使用基于DeviceStatus.ApplicationPeakMemoryUsage的手动跟踪技术以及一些关于优化内容的智能猜测,设法将内存使用量从 10.5MB 减少到 6.5MB。

但是,现在我需要降低到6MB以下 - 而最终的0.5MB被证明是难以捉摸的。

我已经设法在主应用程序上运行"Windows Phone 性能分析"工具,但似乎找不到让它针对代理运行的方法。

是否有任何工具和/或技术可以帮助我找出填满代理记忆的内容?理想情况下,我想要一种方法来调查整个内存空间 - 包括代码和数据,理想情况下它应该适用于发布版本。

如前所述,调试器将添加不可忽略的内存开销。所以我发现最好的方法是:

  • 激活模拟器的控制台:http://nicksnettravels.builttoroam.com/post/2011/01/19/Windows-Phone-7-Console-Window-on-64-bit-machine.aspx

  • 在代码的战略点(例如,主要函数的开始和结束,或在分配大对象之后),显示内存消耗:

    Console.WriteLine("Function {0}: {1}", "name of your function", DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage"));
    
  • 在不附加调试器的情况下启动应用程序(Ctrl + F5),坐下来享受

请记住,如果您在调试模式下运行后台代理,则会在代理的内存占用量上增加大约 2MB,因此您可能没问题。

在直接运行应用(而不是从 Visual Studio)运行时,你可能仍然可以使用 ApplicationPeakMemoryUsage,并将内存详细信息写入独立存储中的文件。

HTH - 鲁伯特。

您可能会发现以下博客文章很有趣,您可能已经看过它,但它描述了调试内存添加以及减少内存占用的一些技巧。

http://www.pitorque.de/MisterGoodcat/post/Windows-电话-后台代理-陷阱-(2-of-n).aspx

最新更新