C# UWP导航内存泄漏
我们注意到我们的UWP应用程序存在内存泄漏。我调查了它,发现当导航到新页面时,内存会变得更高,即使在GC运行时,内存似乎也不会下降很多 我制作了一个小复制品,由两页组成:C# UWP导航内存泄漏,c#,memory-leaks,uwp,navigation,C#,Memory Leaks,Uwp,Navigation,我们注意到我们的UWP应用程序存在内存泄漏。我调查了它,发现当导航到新页面时,内存会变得更高,即使在GC运行时,内存似乎也不会下降很多 我制作了一个小复制品,由两页组成: 主页 公共密封部分类主页面:第页 { 公共主页() { this.InitializeComponent(); } 私有无效导航按钮单击(对象发送者,路由目标) { mainFrame.Navigate(typeof(Page1),null,newwindows.UI.Xaml.Media.Animation.DrillI
公共密封部分类主页面:第页
{
公共主页()
{
this.InitializeComponent();
}
私有无效导航按钮单击(对象发送者,路由目标)
{
mainFrame.Navigate(typeof(Page1),null,newwindows.UI.Xaml.Media.Animation.DrillInNavigationTransitionInfo());
}
}
公共密封部分类第1页:第
{
公共页1()
{
this.InitializeComponent();
}
~Page1()
{
Debug.WriteLine(“页面失效:(”);
}
}
完整的源代码可在上获得
你可以看到这个复制品
我也尝试过设置为false,但没有帮助
我做错了什么
我使用的是Windows 1803,因为我没有最新的1809,但我认为它的工作原理是一样的 在第1页的代码中:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
System.GC.Collect();
}
这是检查应用程序是否必须处理页面的另一种方法。它可以正常工作。感谢您抽出时间。您是说我应该打电话给GC.Cllect()吗在每个页面上,或者只是这样做,看看页面是否被正确处理?我试过了,事实上,内存消耗的增长速度要慢得多,但它仍然在增加,而且似乎没有被回收。我会在其他应用程序中试过,看看它是否解决了问题。虽然说实话,我不喜欢显式调用GC。嗯,对于ure它必须是一个内部UWP错误,因为页面应该自动卸载。可能它在1903年得到解决,因为我认为在1803年IsNavigationStackEnabled是一个新属性,但看起来没有任何效果。我通常做的是使用一种页面的一个实例,只更改viewmodel。这取决于应用程序的很多环境是的,IsNavigationStackEnabled是1809年添加的。共享页面实例和交换虚拟机似乎是一个很好的方法。