我对UWP有问题。我认为视图中存在很大的内存泄漏问题。不再释放视图的内存。您可以在每次导航中实现这一点。导航问题的最佳解决方案是导航缓存,确定,但是我有一个非常复杂的itemtemplate的listview。每次将项目插入到列表视图中时,都会创建一个新的项目模板视图,并且再也不会发布。我写了一个小例子。MemoryLeakExample 单击按钮插入20个项目。该应用程序以24MB内存开头。单击5次后,我们的大小为100MB。为什么?
有人可以帮助我,告诉我我在做什么错吗?
问候,尼科
答案 0 :(得分:1)
如果有人对此感兴趣。答案是:没有答案。
我以此向Microsoft提交了一个bug,在为Microsoft编写示例三个月之后,向他们展示并解释了该bug,与Microsoft员工交谈,并花了很多时间与他们浪费时间,他们提交了一个bug。并将其提供给产品团队。
所以,内存泄漏是真实的,我的代码不仅仅是一个错误的代码。
答案 1 :(得分:0)
您可以使用Visual Studio中的内存使用工具进行诊断。有关详细步骤,请参阅Diagnosing memory issues with the new Memory Usage Tool in Visual Studio。您可以拍摄快照以捕获应用程序内存的状态。有关更多详细信息,请参阅此case reply。
我还检查了您的代码。我发现您将Page
用作DataTemplate
。那就是
没什么好主意。因为,将项目添加到列表视图时,您将创建更多页面实例。并且UI virtualization将不起作用。我使用内存使用工具进行了验证。请检查以下屏幕截图。
TestBlockView
的数量增加了11,消耗了更多的内存。
我已经尝试将所有TestBlockView
xaml放入DataTemplate
中。无论我添加多少项,内存都将保持在合理的范围内。
根据您的要求,您可以直接制作DataTemplate
,而不必使用Page
。您也可以使用UserControl
来代替Page
。
答案 2 :(得分:0)
Microsoft本周告诉我,他们已修复该错误!这是一个手柄泄漏。他们将其放入预览版本的Windows中,该修复程序将随Spring更新发布到Windows。 因此,希望这是此泄漏的真实且最后的答案...