자주 필요하기 때문에 SQLite.Net Async 라이브러리를 사용하여 SQLite db의 엔터티를 캐싱하고 있습니다. 엔티티를 표시하기 위해로드 바인딩을 사용하는 특정 페이지 (아래에 설명 됨)로 이동하면 '무한'GC 루프가 발생합니다.Xamarin Forms 안드로이드 GC 루프
나는
SQLiteAsyncConnection.Table<T>().ToListAsync()
를 사용하고 엔티티를 캐시 내가 부하와
Parallel.ForEach()
을 사용하여이 후
ConcurrentDictionary<Type, IEnumerable<IEntity>>
에 저장하려면 의 반영 및 재귀 각각의 엔티티를 매핑합니다. 이 프로세스는 다소 빠른 것 같습니다 ...
번거로운 페이지로 이동하면 캐시 된 엔터티를 검색하여 ListView에 표시합니다. 엔터티를 탭하면 엔터티에 대한 정보가 바인딩을 통해 화면에 표시되어야합니다. 사용자가 화면을 탭하면 루프가 시작됩니다.
식료품 점에서 돌아온 후에도 아직 완료되지 않았 음을 알 수 있습니다.
는 내가 더 이상 유형을 모르는 어느 HAXM, 2GBRAM, 256Heap 크기와 갤럭시 탭으로 실행하는 에뮬레이터에서이 테스트 한 두 태블릿 전에 이상의 개체를 처리 할 수있는 입력해도 같은 문제를 (필요 루프가 시작됩니다).
정보가 충분하지 않아서 더 많은 정보를 제공하지만 어디에서 볼지 또는 무엇이 문제를 일으킬 수 있는지 알 수 없습니다.
도움을 주시면 대단히 감사하겠습니다.
너,
문제를 재현 할 수있는 기본적인 데모를 알려주십시오. –
오늘 그 일을 할 것입니다! –