Итак, у меня есть супер-простое приложение только с WebView, которое подключается к нашей главной странице и действует как «телевизор». После проверки на утечки памяти я запускаю это приложение на Amazon Fire Stick в течение длительного периода времени, но, несмотря на это, примерно через 8-9 часов оно без исключения вылетает на консоли. Как я проверял наличие утечек памяти:
- LeakCanary не обнаружил утечек.
- Наблюдая за профилировщиком памяти с течением времени, я вижу, что общий объем используемой памяти всегда в среднем составляет 400 МБ, даже при отметка 8 часов.
- По сравнению со старой версией программы, которая была хуже (в ней было много несвязанного кода и был более старый проект), 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
Любая помощь будет принята с благодарностью, так как я так долго боролся с этой ошибкой.