View UWP内存泄漏

View UWP内存泄漏,view,memory-leaks,uwp,View,Memory Leaks,Uwp,我对UWP有问题。我认为视图中存在很大的内存泄漏问题。它不再释放视图的内存。您可以在每个导航上实现这一点。导航问题的实用解决方案是导航缓存,好吧,但我有一个带有非常复杂itemtemplate的listview。每次在listview中插入项目时,都会创建一个新的项目模板视图,并且不再发布。我写了一个小例子。 单击按钮可插入20个项目。该应用程序以24MB内存启动。单击5次后,我们的容量为100MB。为什么? 谁能帮帮我,告诉我,我做错了什么 您好,Nico您可以使用Visual Studio中

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

谁能帮帮我,告诉我,我做错了什么


您好,Nico

您可以使用Visual Studio中的内存使用工具诊断此问题。有关详细步骤,请参阅。您可以拍摄快照以捕获应用程序内存的状态。有关更多详细信息,请参阅此

我也检查了你的代码。我发现您使用了
页面
作为
数据模板
。那就是 没什么好主意。因为,将项目添加到列表视图时,您将创建更多页面实例。威尔也不行。我用内存使用工具验证了它。请检查以下屏幕截图

TestBlockView
的计数增加了11,并消耗了更多内存

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


根据您的要求,您可以直接制作
DataTemplate
,而不是使用
Page
。您还可以使用替换
页面

如果有人对此感兴趣。答案是:没有答案

我用这个向微软提交了一个bug,在为微软写了三个月的样本后,向他们展示并解释这个bug,和微软的人交谈,和他们做了很多其他浪费时间的事情,他们在这个问题上提交了一个bug,并向产品团队提供了一个样本


因此,内存泄漏是真实的,我的代码不仅仅是一个坏代码。

微软本周告诉我,他们已经修复了这个错误!那是把手漏水。他们将其放入windows内部预览版本中,修复程序将随windows的spring更新一起提供。
所以,希望这是对这个漏洞的真实和最后的答案…

你看过我的例子吗,奇普?它符合您的所有要求!可能会重复感谢您的回答,但不幸的是,从UserControl继承不会释放内存,而将整个模板直接复制到视图中是一个非常糟糕的解决方案,因为我希望重用模板。你知道我可以从哪个类继承模板而不丢失所有内存吗?一般来说,我们通常将这些大量代码放在UserControl或单独的Datatemplate中。我测试了后一个,它是有效的。