Xamarin表示Android GC循环

时间:2017-04-19 11:33:06

标签: c# android xamarin garbage-collection xamarin.android

我通过使用SQLite.Net Async库从SQLite数据库缓存实体,因为它们经常需要。当我导航到某个页面(如下所述)时,该页面使用大量绑定来显示实体“无限”。发生GC循环。

NurseryFull

使用

缓存实体I' m
SQLiteAsyncConnection.Table<T>().ToListAsync()

并将它们存储在

ConcurrentDictionary<Type, IEnumerable<IEntity>>

在此之后我使用

Parallel.ForEach()

有大量的反射和递归来映射每个实体。这个过程似乎相当快......

当我导航到麻烦的页面时,它会检索缓存的实体并将它们显示在ListView中。当点击实体时,应该通过绑定将关于实体的信息显示在屏幕上。当用户点击屏幕时,循环就开始了。

从杂货店回来后,我发现它还没有完成。 NurseryFull

我已经在运行HAXM,2GBRAM,256Heap大小和Galaxy Tab的模拟器上对此进行了测试,其中我不知道这两种类型都有相同的问题(尽管平板电脑可以处理更多实体在循环开始之前)。

我知道这可能不是足够的信息,而且我会提供更多信息,但我不知道在哪里寻找或可能导致这种情况。

非常感谢任何帮助!

此致,

1 个答案:

答案 0 :(得分:0)

我终于找到了问题。起初我认为它与我缓存的实体数量有关,因为问题只在实体数量达到X时才会出现。当我逐条评论XAML以测试为什么页面如此麻烦时我发现了真正的问题。

我创建了一个GIST来显示发生了什么。

TLDR;
我运行多个验证行为,它们彼此冲突。