我在一个完整的应用程序中遇到了内存泄漏问题,使用的是C#和MVVM Light 5。我已经花费了整整一周的时间学习如何使用内存分析器,阅读关于常见内存泄漏问题的相关资料等等。我已经至少投入了25个小时来解决这个问题。我小心翼翼地清除了所有事件处理程序,甚至在后退导航后,以及检测到循环导航时,将每个页面的DataContext和LayoutRoot都设置为null。此外,当另一个页面实例即将创建时(我在App.cs中存储页面的最后一个运行实例),我会检查是否已经存在一个实例,如果是,则清除它。
我已经尽力而为,但我不知道该怎么办了。下面是在两个页面之间反复导航后的内存分析屏幕截图链接。每个页面的实例由于某种原因没有被释放,但它们确实被减少到了极小的字节级别。正如您所看到的,从开始到结束时保留的分配和可视化之间的差异非常小(总共约30MB)。然而,在图表中,我看到了近100MB的差异。这让我感到非常疯狂,我认为底层平台会做得更好来管理内存。非常感谢您的帮助。
我已经尽力而为,但我不知道该怎么办了。下面是在两个页面之间反复导航后的内存分析屏幕截图链接。每个页面的实例由于某种原因没有被释放,但它们确实被减少到了极小的字节级别。正如您所看到的,从开始到结束时保留的分配和可视化之间的差异非常小(总共约30MB)。然而,在图表中,我看到了近100MB的差异。这让我感到非常疯狂,我认为底层平台会做得更好来管理内存。非常感谢您的帮助。