You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Shell登录页驻留内存,是否应被GC回收?

关于Xamarin Shell中LoginPage的GC回收问题

我使用了David Ortinau的Shell登录示例,Shell结构如下:

<ShellItem Route="login">
    <ShellContent ContentTemplate="{DataTemplate local:LoginPage}"/>
</ShellItem>

<TabBar Route="main">
    <Tab Title="Browse" Icon="tab_feed.png">
        <ShellContent 
            ContentTemplate="{DataTemplate local:ItemsPage}" />
    </Tab>
    <Tab Title="About" Icon="tab_about.png">
        <ShellContent 
            ContentTemplate="{DataTemplate local:AboutPage}" />
    </Tab>
    <Tab Title="Admin" IsVisible="{Binding IsAdmin}">
        <ShellContent
            ContentTemplate="{DataTemplate local:AdminPage}"/>
    </Tab>
</TabBar>

应用启动时默认导航至LoginPage,登录后通过以下代码跳转到主页面(ItemsPage):

await Shell.Current.GoToAsync("//main");

我在ItemsPage中添加了强制GC的逻辑,通过按钮触发:

private void Button_Clicked(object sender, EventArgs e){
    Device.BeginInvokeOnMainThread(async () =>{
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            await Task.Delay(1000);
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();
        });
    }

但通过Xamarin Profiler观察到LoginPage仍驻留内存,请问该页面是否应该被GC回收?

内存分析截图

内容的提问来源于stack exchange,提问作者Milan Henkrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:45:19