由于内存泄漏,Xamarin表单应用程序重新构建

时间:2018-02-15 12:36:50

标签: c# listview memory architecture xamarin.forms

假设我有类似下面的内容

  1. 一堆数据类
  2. 大多数数据类的列表
  3. 列表< List< List< Data>>>的加载用于表示至少3D数组的类
  4. 由于线程访问而在不同页面中使用的一些App.MyViewModel视图模型
  5. 根据我的喜好,视图模型非常复杂,其中大量属性链接回到第3点
  6. 最后,每个ListView模板都是从ObservableCollection< String>创建的。从List< Data>
  7. 之一生成

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

1 个答案:

答案 0 :(得分:0)

你应该看看 Xamarin Profiler

Xamarin Profiler

  

Xamarin Profiler有许多可用的仪器   分析分配,周期和时间分析器

可能有很多问题无法知道从哪里开始,因为设计再一次很难知道如何重构你的应用程序因为我们不知道你想要实现什么。如果你需要使用列表,你需要使用它们,你可以做的事情并不多。

但是,您需要从第一原则开始,并确保您只做您需要做的事情,仅实例化您需要实例化的内容,保留 xaml UI 尽可能少的循环计算。最后,确保您的视图模型和对象超出范围并进行垃圾回收