gpt4 book ai didi

c# - 由于内存泄漏,Xamarin Forms 应用程序重新架构)

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:28 25 4
gpt4 key购买 nike

假设我有如下内容

  1. 一组数据类
  2. 大多数数据类的列表
  3. 加载 List >> 类以至少表示 3D 数组
  4. 由于线程访问,在不同页面中使用了很多 App.MyViewModel View 模型
  5. Viewmodels 非常复杂,有大量属性链接回第 3 点
  6. 最后,每个 ListView 模板都是从 ObservableCollection 创建的,而 ObservableCollection 是从 List 之一生成的

在生命周期中,这些列表可能会被更新很多次,我希望这应该回收以前使用过的内存? ListView 行/单元格创建为网格。在多达数十行的小 ListView 上,它工作得很好而且速度很快,不会增加太多内存使用。然而,在包含数千行的大型数据集上,即使滚动 ListView 有时也会使应用程序崩溃,并且内存会随着数据的每一部分而急剧增加。所以真正的问题是,根据您自己的经验,您会在故障排除和重新设计方法时推荐什么?

最佳答案

您真的应该看看 Xamarin Profiler

Xamarin Profiler

The Xamarin Profiler has a number of instruments available for profiling Allocations, Cycles, and Time Profiler

可能有太多的问题,以至于无法知道从哪里开始,至于设计,再次很难知道如何重构您的应用程序,因为我们不知道您想要实现什么。如果您需要使用列表,您就需要使用它们,而您对此无能为力。

但是,您需要从第一原则开始,并确保您只做您需要做的事情,只实例化您需要实例化的内容,保持您的xamlUI 尽可能减少循环计算。最后确保您的 View 模型和对象超出范围并被垃圾收集

关于c# - 由于内存泄漏,Xamarin Forms 应用程序重新架构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48807474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com