c# - WP8 大量内存泄漏

标签 c# windows-phone-8 memory memory-leaks

我在一个完全开发的应用程序中遇到内存泄漏问题真的很困难。带有 MVVM Light 5 的 C#。 我整整一周都在学习如何使用内存分析器,阅读有关常见内存泄漏问题的资料,等等。我至少花了 25 小时以上的时间来解决这个问题。我仔细清除所有事件处理程序,甚至在 BackNavigation 之后以及检测到循环导航时清除每个页面的 DataContext 和 LayoutRoot(我将页面的最后一个运行实例存储在 App.cs 中,当该页面的另一个实例即将创建,我检查是否已经有一个实例,如果有,我将其清除)。

我已经用尽了我的努力,我不知道从这里去哪里。

下面是在 2 个页面之间反复导航后的内存分析屏幕截图的链接。 由于某种原因,每个页面的实例都没有被释放,但它们正在被减少到仅仅字节数。

enter image description here

如您所见,从开始到结束,我保留的分配和保留的视觉效果之间的差异非常小(总共大约 30mb)。

但在图中,我看到了将近 100mb 的差异。

这让我非常抓狂,我认为底层平台可以更好地管理它。非常感谢任何帮助。

最佳答案

I carefully clear all event handlers, and even null out the DataContext and LayoutRoot of each page after BackNavigation

我建议建立一个系统来重复使用虚拟机,并且只在真正需要时才获取新数据。我开发了一个专业的 map 应用程序,目前在 WP 商店中,我们只根据需要创建项目,并且从未创建过两次 VM。

关于c# - WP8 大量内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848265/

相关文章:

c# - Java 中 C# 用户定义转换的替代方案

c# - 如何检查用户是否在 WP8 设备上安装了特定的应用程序

c# - 加载“我的应用程序”时以编程方式截取屏幕截图

c - 内存和静态/共享库中的程序位置

c - 多个相同文字的内存使用与 const

java - 如何测量java应用程序使用的内存?

c# - Doxygen:不支持部分类?

java - 将 mandelbrot 绘制到位图中

javascript - 如何将刻度转换为 momentjs 对象

c# - 广告控件不显示任何内容并在 Windows Phone 应用程序上消失