UWP内存泄漏

时间:2018-07-05 21:46:09

标签: view memory-leaks uwp

我对UWP有问题。我认为视图中存在很大的内存泄漏问题。不再释放视图的内存。您可以在每次导航中实现这一点。导航问题的最佳解决方案是导航缓存,确定,但是我有一个非常复杂的itemtemplate的listview。每次将项目插入到列表视图中时,都会创建一个新的项目模板视图,并且再也不会发布。我写了一个小例子。MemoryLeakExample 单击按钮插入20个项目。该应用程序以24MB内存开头。单击5次后,我们的大小为100MB。为什么?

有人可以帮助我,告诉我我在做什么错吗?

问候,尼科

3 个答案:

答案 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将不起作用。我使用内存使用工具进行了验证。请检查以下屏幕截图。

enter image description here

TestBlockView的数量增加了11,消耗了更多的内存。

我已经尝试将所有TestBlockView xaml放入DataTemplate中。无论我添加多少项,内存都将保持在合理的范围内。

根据您的要求,您可以直接制作DataTemplate,而不必使用Page。您也可以使用UserControl来代替Page

答案 2 :(得分:0)

Microsoft本周告诉我,他们已修复该错误!这是一个手柄泄漏。他们将其放入预览版本的Windows中,该修复程序将随Spring更新发布到Windows。 因此,希望这是此泄漏的真实且最后的答案...