我正在为芒果(7.1)预定的后台代理工作
我已经设法使用基于DeviceStatus.ApplicationPeakMemoryUsage
的手动跟踪技术将内存使用率从10.5MB降低到6.5MB,同时还有一些关于优化内容的智能猜测。
然而,现在我需要降到6MB以下 - 最后的0.5MB是难以捉摸的。
我已经设法在主应用上运行“Windows Phone Performance Analysis”工具,但似乎找不到让它与代理运行的方法。
是否有任何工具和/或技术可以帮助我找出填满代理人记忆的东西?理想情况下,我想要一种方法来调查整个内存空间 - 包括代码和数据,理想情况下它应该适用于发布版本。
答案 0 :(得分:5)
如前所述,调试器将添加不可忽略的内存开销。所以我找到的最好方法是:
在代码的关键点(例如主要函数的开头和结尾,或者在分配大对象之后),显示内存消耗:
Console.WriteLine("Function {0}: {1}", "name of your function", DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage"));
启动应用程序而不附加调试器(Ctrl + F5),坐下来享受
答案 1 :(得分:1)
请记住,如果您在调试模式下运行后台代理,这会在代理的内存占用量上增加大约2MB,因此您可能没问题。
您可以使用ApplicationPeakMemoryUsage,并在直接运行应用程序时将内存详细信息写入隔离存储中的文件,而不是从Visual Studio中。
HTH - 鲁珀特。
答案 2 :(得分:0)
您可能会发现以下博客文章很有趣,您可能已经看过它,但它描述了调试内存添加以及减少内存占用的一些提示。
http://www.pitorque.de/MisterGoodcat/post/Windows-Phone-Background-Agents-Pitfalls-(2-of-n).aspx