Xaml 应用程序加载阶段和内存泄漏检测
我仍在与内存泄漏作斗争。使用改进的MemoryDiagnosticsHelper,我增加了创建数据统计以查看即时内存消耗的可能性 问题从完整的应用程序开始:我有一个包含3个项目的轴心,其中2个包含10-20个对象的列表(有可能跳转到项目细节)。内存诊断显示,它消耗了大约50Mb的内存。跳转到细节页面并返回pivot后,内存消耗很容易增加到70Mb 起初,我将列表移动到单独的应用程序。没有风格,它需要15兆。我还没有检查,但我假设,pivot中的两个列表大约需要20MB,因为DLL已经加载 所以,我决定深入到应用程序加载阶段Xaml 应用程序加载阶段和内存泄漏检测,xaml,windows-phone-7,memory-leaks,Xaml,Windows Phone 7,Memory Leaks,我仍在与内存泄漏作斗争。使用改进的MemoryDiagnosticsHelper,我增加了创建数据统计以查看即时内存消耗的可能性 问题从完整的应用程序开始:我有一个包含3个项目的轴心,其中2个包含10-20个对象的列表(有可能跳转到项目细节)。内存诊断显示,它消耗了大约50Mb的内存。跳转到细节页面并返回pivot后,内存消耗很容易增加到70Mb 起初,我将列表移动到单独的应用程序。没有风格,它需要15兆。我还没有检查,但我假设,pivot中的两个列表大约需要20MB,因为DLL已经加载 所以,
- 在InitializePhoneApplication()上,它需要7 Mb
- 在CompleteInitializePhone应用程序()中,空ViewModelLocator需要8.5 Mb,所有ViewModel需要10.5 Mb。相当大,但我有30-40个数据服务和40-50个视图模型。所以随它去吧,如果它不再生长,我会觉得自己很好
- 在第一个页面的OnNavigatedTo()中,所有虚拟机占用的内存几乎相同,大约为10.7 Mb,这没关系
- 没有利润。说真的,接下来会发生什么?我不知道接下来到底发生了什么,但MemoryDiagnosticsHelper说,内存消耗跳到了30Mbs。为什么?所有DLL和VM都已加载。我正在加载一个非常空白的页面,完全是白色的
在appinit的第一阶段,我希望它们加载得更平滑。另外,现在很清楚,为什么探查器说内存中没有那么多托管代码。我不确定我是否理解问题所在。基本上,您是在抱怨从详细信息页面返回后内存没有下降,还是在抱怨使用的内存量?实际上,两者都是。首先,原因是:当我在母版细节页面之间跳跃时,内存量正在增长。没那么快,乍一看还可以(有点像大师(50)、细节(35)、大师(50)、细节(37)、大师(53)、细节(35)、大师(55)等等)。起初,我认为这是暂时的,但母版页上使用的内存量稳步增长。第二个结果是:当我试图查看内部时,在每个时刻使用的内存量上,我看到在整个应用程序加载后,内存消耗仍然有显著的跳跃,即使是空页面也是如此。@Vitalivasylenko上次我在windows phone上使用EventToCommand从MvvmLight(几个月前)发送命令时漏洞仍然存在,一个简单的修复方法是使用命名空间xmlns:i=“clr namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity”中的i:InvokeCommandAction,但它没有problem@BenoitCatherinet伟大的我本来打算将命令调用移动到codebehind,但您的修复速度要快得多。我同意如果您需要传递事件参数,在这种情况下,使用codebehind似乎是一个很好的解决方案,因为无论如何事件参数都与UI相关,因此可能不应该传递给视图模型,而是最好在codebehind中处理事件,并传递给视图模型一些更抽象的内容。