分析后台任务的内存使用情况
Posted
技术标签:
【中文标题】分析后台任务的内存使用情况【英文标题】:Profiling memory usage of background task 【发布时间】:2015-04-16 15:44:39 【问题描述】:我正在编写一个使用 BackgroundMediaPlayer 的多媒体应用程序 (WP 8.1)。问题在于内存 - 后台任务经常因 OutOfMemoryException 而崩溃。我尝试通过代码查看是否有任何内存泄漏,但找不到任何内存泄漏。
我看到这篇文章描述了正在运行的应用程序的内存分析 - http://blogs.msdn.com/b/visualstudioalm/archive/2014/04/03/performance-profiling-on-windows-phone-8-1-with-visual-studio.aspx 后台任务如何实现相同的目标?或者还有其他方法可以查看如何优化后台任务的内存使用?
我已经尝试 GC.Collect 作为最后的手段,但没有帮助..
【问题讨论】:
问题不是泄漏,而是没有发布的硬引用。我通常发现这些隐藏的地方是不明显的,它们是附加到您认为已释放的内存的事件处理程序。 【参考方案1】:安装应用程序Field Medic,通过USB连接手机并在资源管理器中打开文件夹This PC\Windows Phone\Phone\Documents\FieldMedic\CustomProfiles
,根据需要在该路径中创建缺少的文件夹。
下载此profile file,将其复制到手机上的CustomProfiles
文件夹中。
启动 Field Medic 应用程序,转到 advanced
,选择 custom
下的 Multimedia Memory Profile。
现在运行您的应用程序,当您捕获了几分钟的内存增长时,返回 Field Medic,停止跟踪。将 ETL 文件从 This PC\Windows Phone\Phone\Documents\FieldMedic\reports
复制到您的 PC 和 analyze it with Windows Performance Analyzer (WPA)。
【讨论】:
以上是关于分析后台任务的内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章