MonkAlex / MangaReader

Help to download updates from online manga readers.
http://monkalex.github.io/MangaReader/
MIT License
51 stars 6 forks source link

Большое потребление памяти #149

Open MonkAlex opened 5 years ago

MonkAlex commented 5 years ago

На базе размером в 100-150мб приложение может потреблять порядка 1гб памяти. При этом, если походить по вкладкам настроек или поиска, библиотека может сломаться (пока подозрение на GC).

По памяти - надо понять, куда столько уходит, пооптимизировать. По визуальной части библиотеки - надо найти причину и починить.

MonkAlex commented 4 years ago

Память уходит на картинки. GC их выгружает (т.к. они созданы исключительно для отображения, их действительно можно выгрузить).

При работе под dotMemory библиотека не ломается, картинки загружаются обратно корректно.

MonkAlex commented 4 years ago

Рендер всё ещё ломается, но непонятно - на чём. Пока есть подозрение, что дело в параллельным обращениям к разным моделькам (поиска и библиотеки например), но подтвердить не удалось.

Для оптимизации стоит посмотреть в сторону виртуализации, но тут непонятно что делать с разметкой - сейчас используется wrappanel (для библиотеки и поиска), а виртуализации готовые только для stackpanel.

MonkAlex commented 4 years ago

Вчера было почти стабильное проявление на открытии свойств разной манги подряд.

MonkAlex commented 4 years ago

Стабильное проявление:

  1. Открыть библиотеку.
  2. Клацнуть диалог удаления истории
  3. Отменить
  4. Открыть свойства

В фоне упадёт IPNC, см https://github.com/AvaloniaUI/Avalonia/issues/3468#issuecomment-602276073

Есть и другие проявления, но их стабильно не удалось достать.

MonkAlex commented 4 years ago

Баг с пропаданием контента исправлен.

Проблема с пожиранием памяти осталась, как выше и написано - требуется виртуализация, а её никак просто не включить.

MonkAlex commented 4 years ago

Доходит до 2гб, выглядит на самом деле близко к критичному. Посмотреть на авалонию в 0.10, возможно получится сделать всё таки библиотеку с виртуализацией.