C# Xamarin形成Android GC循环
我使用SQLite.Net异步库缓存SQLite数据库中的实体,因为它们是经常需要的。当我导航到某个页面(如下所述),该页面使用大量绑定来显示实体时,会出现一个“无限”GC循环 要缓存实体,我使用C# Xamarin形成Android GC循环,c#,android,xamarin,garbage-collection,xamarin.android,C#,Android,Xamarin,Garbage Collection,Xamarin.android,我使用SQLite.Net异步库缓存SQLite数据库中的实体,因为它们是经常需要的。当我导航到某个页面(如下所述),该页面使用大量绑定来显示实体时,会出现一个“无限”GC循环 要缓存实体,我使用 SQLiteAsyncConnection.Table<T>().ToListAsync() 通过大量的反射和递归来映射每个实体。这个过程似乎相当快 当我导航到有问题的页面时,它会检索缓存的实体并在ListView中显示它们。点击实体时,有关实体的信息应通过绑定显示在屏幕上。当用户点击
SQLiteAsyncConnection.Table<T>().ToListAsync()
通过大量的反射和递归来映射每个实体。这个过程似乎相当快
当我导航到有问题的页面时,它会检索缓存的实体并在ListView中显示它们。点击实体时,有关实体的信息应通过绑定显示在屏幕上。当用户点击屏幕时,循环开始
从杂货店回来后,我发现它还没有完成。
我已经在运行HAXM、2GBRAM、256Heap size和Galaxy选项卡的模拟器上对此进行了测试,我不知道这两个选项卡的类型,它们都有相同的问题(尽管平板电脑可以在循环开始之前处理更多实体)
我知道这可能是不够的信息,我会提供更多,但我只是不知道在哪里寻找或什么可能导致这一点
非常感谢您的帮助
你的,我终于找到问题了。起初,我认为这与我缓存的实体数量有关,因为问题只有在实体数量达到X时才会出现。当我逐条注释XAML以测试页面为何如此麻烦时,我发现了真正的问题 我创造了一个新的世界来展示发生了什么 TLDR
我运行了多个验证行为,但它们相互冲突。能否请您分享一个可以重现问题的基本演示?我今天将对此进行研究!
ConcurrentDictionary<Type, IEnumerable<IEntity>>
Parallel.ForEach()