Я создаю приложение (которое будет , а не будет в магазине воспроизведения), которое использует много памяти с Webview, и с помощью LeakCanary я обнаружил несколько небольших утечек памяти.Есть 2 утечки, которые гораздо труднее исправить, чем остальные, но они также намного меньше, чем любые другие (утечка 10-12 Кб каждые пару часов), и мне пришлось на время оставить их.После запуска приложения в течение ночи я обычно возвращаюсь к потоку журналов, например:
Частичная фоновая развертка одновременной пометки GC освободил 263432 (17MB) объектов AllocSpace, 0 (0B) объектов LOS, 26% свободного, 44 МБ / 60 МБ, приостановлено 13,441 мс всего 226,525 мс
Фоновая разметка при одновременном отслеживании меток Освобождение GC 145187 (13 МБ) объектов AllocSpace, 0 (0B) объектов LOS, 22% свободного, 46 МБ / 60 МБ, пауза 12,864мс всего 164,097мс
Фоновая частичная одновременная развертка меток GC освобождено 265421 (17 МБ) объектов AllocSpace, 0 (0B) объектов LOS, 26% свободных, 44 МБ / 60 МБ, приостановлено 13,632 мс всего 230,849 мс
Очистка фоновой липкой одновременной метки GC освобождено 147514 (14 МБ) объектов AllocSpace, 0 (0B) объектов LOS, 22% свободных, 46 МБ / 60 МБ, приостановлено 13.037 мс всего 167.625 мс
Эти журналы повторяются, одинкаждые 2 секунды, бесконечно и заставлять приложение зависать, пока я не убью его и не начну заново.
В своем манифесте я добавил
android:largeHeap="true"
И поскольку мое приложение должно работать непрерывно (еззепрактически навсегда) Я включил будильник на 1 час ночи каждое утро, чтобы убить приложение и перезапустить с чистой окружающей средой.Это не лучшая практика, но она служит хорошим уловом для любых ошибок, возникающих из-за необычно долгой жизни приложения.
Может ли одна или две небольшие утечки памяти действительно причинить такой большой ущерб?Что еще может вызывать повторение этих журналов?Как я могу это исправить?