我还在与内存泄漏作斗争。使用改进的MemoryDiagnosticsHelper,我增加了制作数据广播以查看即时内存消耗的可能性。
问题从完整的应用程序开始:我有一个包含3个项目的轴,其中2个包含10-20个对象的列表(可以跳转到项目详细信息)。内存诊断显示,它消耗大约50Mb的内存。跳转到详细页面并返回枢轴后,内存消耗很容易增加到70Mb。
首先,我将列表移动到单独的应用程序。没有风格,需要15 Mbs。我还没检查,但我认为,在枢轴中的2个列表大约需要20Mbs,因为dll已经加载了。
所以,我决定深入到app加载阶段。
Profiler(当然在发布模式下运行)也很无奈。它只显示内存消耗的增长,但它发生在非托管内存中。它真的很烦人。
好的,让我们更清楚地提问。当app初始化(传递初始化,加载和附加viewmodel,页面传递OnNavigatedTo())时接下来会发生什么?
编辑1:在夜晚,我明白了,我的应用程序中唯一的弱部分(至少是主要细节页面)是MVVMLight的EventToCommand。谷歌的第一篇文章几乎是http://atomaras.wordpress.com/2012/04/23/solving-mvvmlights-eventtocommand-memory-leak-wp7/任何人都知道,如果这是一个很容易修复的吗?我检查了MvvmLight的博客,看起来Laurent正在开发安装程序。这让我想到了,这个泄漏应该已经解决了,不是吗?
编辑2:我看到2个泄漏问题的解决方案:要么使用上面链接中的修复,要么从代码隐藏中调用命令。或者使用另一个MVVM库。
答案 0 :(得分:0)
参考。
我希望在app init的第一阶段加载更加流畅。此外,现在很清楚,为什么分析器说内存中没有那么多托管代码。