我正在用 c# 制作一个 WP8 图像处理应用程序,并且遇到了一些内存问题。
如果我离开应用程序并多次返回,我的内存就会耗尽(例如 Home -> back -> home -> back...)。
我想知道如何调试这个问题?我正在尝试尽可能多地清理内存(使用 Dispose/将内容设置为 null),但它不起作用。
我将如何调试它?有没有办法找出内存是如何被什么使用的?
我正在用 c# 制作一个 WP8 图像处理应用程序,并且遇到了一些内存问题。
如果我离开应用程序并多次返回,我的内存就会耗尽(例如 Home -> back -> home -> back...)。
我想知道如何调试这个问题?我正在尝试尽可能多地清理内存(使用 Dispose/将内容设置为 null),但它不起作用。
我将如何调试它?有没有办法找出内存是如何被什么使用的?
检查这个问题的答案:
Windows Phone SDK 带有一个用于内存消耗和其他东西的分析器,安装 SDK 后,它在 Visual Studio 中可用。
或者,这里是 MSDN 文章的直接链接:
http://msdn.microsoft.com/en-us/library/hh202934%28v=vs.92%29.aspx
更新:
看起来这个问题是针对 WP7 的,所以它可能适用也可能不适用。但是,我发现一篇文章同时适用于 WP8 和 WP7:
http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202934(v=vs.105).aspx
lhan16 的回答很到位。
您需要做的是使用内存分析并定期检查哪些内存堆以查看不应该分配的内存。这至少可以帮助您缩小内存泄漏的罪魁祸首。我写了一篇文章,其中包括一个存储太多字节 [] 的简单示例,以及如何使用内存分析工具找到那些 @ http://www.developer.nokia.com/Community/Wiki/Techniques_for_memory_analysis_of_Windows_Phone_apps#Profiling