小编Roo*_*ozi的帖子

UWP - 帧导航似乎导致非托管内存泄漏

看来Frame导航(特别是Frame.Navigate(Type)方法)正在泄漏非托管内存.
在我查看Visual Studio诊断工具的每次导航之后,Private Bytes正在上升,但是当我拍摄内存的快照时,堆大小没有增加.页面越多,组件越糟糕.内存似乎永远不会被释放.无论应用程序是构建在Debug还是Release(无论是.Net Native还是没有),都无关紧要.我正在使用14393 SDK(周年纪念更新).

我创建了一个示例应用程序,它具有一个主页面和两个(内容)页面,它们之间保持导航(在PageLoaded事件上).我已将CacheSize ="0"设置为Frame,并且Pages具有NavigationCacheMode ="Disabled",因此它们不会被缓存.我也在每次导航之前清除了backstack并取消订阅PageUnloaded上的每个事件.
以下是其中一个页面的.cs文件:

public sealed partial class FirstPage : Page
{
    public FirstPage()
    {
        this.InitializeComponent();
    }

    private void NavigateToSecondPage()
    {
        MainPage.ContentFrame.BackStack.Clear();
        MainPage.ContentFrame.Navigate(typeof(SecondPage));
    }

    private void NavigateButton_Click(object sender, RoutedEventArgs e)
    {
        NavigateToSecondPage();
    }

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        if (!MainPage.StopNavigating)
        {
            NavigateToSecondPage();
        }
    }

    private void Page_Unloaded(object sender, RoutedEventArgs e)
    {
        this.NavigateButton.Click -= NavigateButton_Click;
        this.Loaded -= Page_Loaded;
        this.Unloaded -= Page_Unloaded; …
Run Code Online (Sandbox Code Playgroud)

c# memory memory-leaks uwp

7
推荐指数
1
解决办法
1007
查看次数

标签 统计

c# ×1

memory ×1

memory-leaks ×1

uwp ×1