頻繁に必要となるため、SQLite.Net Asyncライブラリを使用してSQLite dbのエンティティをキャッシュします。エンティティを表示するためにバインディングの負荷を使用する特定のページ(後述)に移動すると、「無限の」GCループが発生します。Xamarin Forms Android GCループ
私は
SQLiteAsyncConnection.Table<T>().ToListAsync()
を使用していたエンティティをキャッシュし、私は負荷に
Parallel.ForEach()
を使用して、この後
ConcurrentDictionary<Type, IEnumerable<IEntity>>
に保存するにはのリフレクションと再帰を使用して各エンティティをマッピングします。このプロセスはむしろ高速です...
問題のあるページに移動すると、キャッシュされたエンティティが取得され、ListViewに表示されます。エンティティがタップされると、そのエンティティに関する情報がバインディングを介して画面に表示されます。ユーザーが画面をタップすると、ループが始まります。
食料品店から帰った後、私はそれがまだ行われていないことがわかります。
私はもうタイプを知らないうち256Heapサイズとギャラクシータブは、タブレットが以前より多くのエンティティを扱うことができaltough(同じ問題を抱えて両方、HAXM、2GBRAMで実行しているエミュレータ上でこれをテストしてみましたループが始まります)。
これはおそらく十分な情報ではないと私はもっと多くを提供するだろうが、私はちょうどどこを見て何が原因かもしれないか分からない。
ご協力いただきありがとうございます。
あなた、
問題を再現できるデモンストレーションを共有してください。 –
私は今日それについて作業します! –