我创建了超过200页的Windows应用商店应用程序。这里的问题是当我从一个页面移动到另一个页面时,尽管释放了所有引用,但每个页面都留下了很小的内存空间。我检查了所有主要工具和分析器,并确保没有引用它们。因此,内存增加到500-600奇数MB,应用程序最终崩溃。
作为一个例子,我创建了一个包含2页的示例项目,即Page1和Page2。 Page1很重,有很多控件(包括一个重定向到Page2的按钮),而Page2是一个空白页面。现在在App.xaml.cs中,如果我将第一页设置为Page2,则应用程序启动,我可以看到Page2。不在TaskManager中,我看到内存为17 MB。
现在,我更改了App.xaml.cs,使起始页面成为Page1。当我启动应用程序时,当我看到TaskManager时,我看到内存为50.4 MB这是好的,直到现在考虑页面上的控件和图像。现在,当我单击导致我进入Page2的按钮时,我看到taskManager中的内存为50.7 MB(增加了300 KB)。
我想完全摆脱Page1,但我遇到了问题。
请注意,我已经处理了所有基本的内存相关内容,例如
发布了对Page1中所有对象的所有引用 确保Page1没有使用Profilers和PerfView(RefTree)等工具进行任何引用 清除BackStack 禁用缓存 我不知道如何处理这个问题,并且我已经使用了所有可能的替代方案。
我创建了一个演示应用并将其上传到https://drive.google.com/file/d/0ByK3PdkYyb7ZbG13TmM3cmFPcjA/view?usp=sharing
请帮忙!