Android Studio Simple 'TV' App с Single WebView аварийно завершает работу через долгое время (профилировщик показывает отрицательное выделение памяти?) - PullRequest
1 голос
/ 29 мая 2020

Итак, у меня есть супер-простое приложение только с WebView, которое подключается к нашей главной странице и действует как «телевизор». После проверки на утечки памяти я запускаю это приложение на Amazon Fire Stick в течение длительного периода времени, но, несмотря на это, примерно через 8-9 часов оно без исключения вылетает на консоли. Как я проверял наличие утечек памяти:

  1. LeakCanary не обнаружил утечек.
  2. Наблюдая за профилировщиком памяти с течением времени, я вижу, что общий объем используемой памяти всегда в среднем составляет 400 МБ, даже при отметка 8 часов.
  3. По сравнению со старой версией программы, которая была хуже (в ней было много несвязанного кода и был более старый проект), LeakCanary DID обнаруживал утечки в одном и том же коде, а профилировщик медленно увеличивал общий объем используемой памяти. Это заставило меня поверить в то, что изоляция всего необходимого кода и его перенос в новый проект частично решили проблему.

Теперь действительно странно то, что даже несмотря на то, что выделенная память в профилировщике колеблется , оно УМЕНЬШАЕТСЯ. Фактически к отрицательным числам. К 8 часам я видел в среднем около -40000. Почему выделенный номер отрицательный?

Наконец, вот повторяющийся и подозрительный журнал консоли, который я видел прямо перед cra sh, намекающий, что это действительно ошибка, связанная с памятью sh:

I/Kernel: [126985.795618].(0)[3041:RenderThread]lowmemorykiller: Killing 'VMetricsProcess' (29681), adj 1, score_adj 58,
    [126985.795618]   to free 20124kB on behalf of 'RenderThread' (3041) because
    [126985.795618]   cache 40244kB is below limit 40960kB for oom_score_adj 58
    [126985.795618]   Free memory is 0kB above reserved

Любая помощь будет принята с благодарностью, так как я так долго боролся с этой ошибкой.

...