【发布时间】:2017-04-19 11:33:05
【问题描述】:
我使用 SQLite.Net Async 库从 SQLite 数据库缓存实体,因为它们经常需要。当我导航到使用大量绑定来显示实体的某个页面(如下所述)时,会发生“无限”GC 循环。
缓存我正在使用的实体
SQLiteAsyncConnection.Table<T>().ToListAsync()
并将它们存储在一个
ConcurrentDictionary<Type, IEnumerable<IEntity>>
之后我使用
Parallel.ForEach()
使用大量反射和递归来映射每个实体。这个过程似乎相当快...
当我导航到麻烦的页面时,它会检索缓存的实体并将它们显示在 ListView 中。当一个实体被点击时,关于该实体的信息应该通过绑定显示到屏幕上。当用户点击屏幕时,循环就开始了。
我已经在使用 HAXM、2GBRAM、256Heap 大小和我不知道其类型的 Galaxy Tab 运行的模拟器上对此进行了测试,两者都有相同的问题(尽管平板电脑可以在循环开始之前处理更多实体)。
我知道这可能还不够信息,我会提供更多信息,但我只是不知道去哪里寻找或什么可能导致这种情况。
非常感谢任何帮助!
你的,
【问题讨论】:
-
能否分享一个可以重现问题的基本演示?
-
我今天会继续努力的!
标签: c# android xamarin garbage-collection xamarin.android