【发布时间】:2020-11-13 12:06:14
【问题描述】:
在我的 Xamarin 应用程序中,我有五个页面,第 1 页、第 2 页、第 3 页、第 4 页和第 5 页。从第 5 页导航到第 3 页时,我调用 Navigation.RemovePage() 以删除 NavigationStack 中的第 4 页.但是,调用 RemovePage() 时存在巨大的内存泄漏。我想知道在尝试删除 NavigationStack 中两个页面之间的页面时是否有任何解决方法可以避免内存泄漏? (由于第3页不是根页,所以我不能使用PopToRootAsync())
另外,任何人都可以向我解释为什么使用 PushModalAsync() 会删除 NavigationStack 中的所有页面,只保留当前添加的页面以及 NavigationStack 和 ModalStack 中的页面。
非常感谢。
【问题讨论】:
-
您是如何确定存在内存泄漏的?
-
应用在 UWP 上运行。我使用 Visual Studio 的诊断工具来查看内存使用量的增长速度非常快。在任务管理器中,它还显示内存使用量增加得非常快。在 Android 和 iOS 平台上运行良好,没有内存泄漏。
-
你知道在比较这些内存值时垃圾收集器是否运行了吗?只是想确保它是真正的内存泄漏,而不仅仅是在 GC 清理之前一直存在的未收集内存
-
@MouseOnMars 首先,我不确定 GC 何时可以释放内存,而且我的 UWP 上的内存使用量似乎永远不会减少。 Nico 编写了一个示例,从第 1 页到第 2 页,从第 2 页到第 3 页,然后删除第 2 页并回到第 1 页也会导致内存泄漏,如 Visual Studio 诊断工具所示。您可以对此进行测试以查看是否发生内存泄漏。这是链接link。非常感谢。
标签: xamarin.forms uwp xamarin.uwp