У меня возникает несколько ошибок OutOfMemory при длительных сеансах работы моего приложения для Android. Чтобы найти причину, я пытаюсь использовать Android Studio Profiler, но он перестает работать и зависает в течение 10 секунд после использования.
Есть скриншот экрана Android Studio. Он регистрирует действия в течение первых секунд, затем просто замораживает приложение и перестает что-либо регистрировать -> https://ibb.co/QXLhqnz
Последние строки моего лог-каталога (последние строки повторяются с увеличением времени, я изменил имя своего пакета)
2019-04-09 08:42:41.151 19728-20399/br.com.xxxxx V/StudioProfiler: Live memory tracking enabled.
2019-04-09 08:42:41.151 19728-20399/br.com.xxxxx V/StudioProfiler: JNIEnv not attached
2019-04-09 08:42:41.483 19728-20399/br.com.xxxxx V/StudioProfiler: Loaded classes: 8894
2019-04-09 08:42:51.688 19728-20399/br.com.xxxxx E/zygote: E[0]:Timed out waiting for threads to suspend(br.com.xxxxx), waited for 10.000s
2019-04-09 08:43:01.689 19728-20399/br.com.xxxxx E/zygote: E[0]:Timed out waiting for threads to suspend(br.com.xxxxx), waited for 20.000s
2019-04-09 08:43:11.689 19728-20399/br.com.xxxxx E/zygote: E[0]:Timed out waiting for threads to suspend(br.com.xxxxx), waited for 30.000s
Любая помощь приветствуется заранее.
Извините, больше нет. Я сменил работу некоторое время назад и больше не имею доступа к этому коду. Прошло уже 11 месяцев :) В любом случае спасибо.
@RyanM Я всегда могу воспроизвести это, в основном на Android 8.0.
@ kaitian521 Можете ли вы воспроизвести только что созданный проект на другом компьютере?
@Enselic Я позволил моему колледжу попробовать, он тоже может размножаться
Я думаю, это ошибка. но я не уверен. однако я думаю, что вам следует обновить свою студию Android до последней версии. возможно исправят :)
Тот факт, что вы и ваш коллега можете воспроизвести проблему, мало помогает, а никто из нас не может ее воспроизвести. Скорее всего виновата утечка, о которой можно только догадываться, не предоставив ни малейшего кода.
Я обновляю Android Studio до 4,1, тоже разбился...
@ kaitian521 Попробуйте один раз с Android Studio 3.6.2 (тем не менее, утечку необходимо устранить).
Я получил это на Studio 4.0
тоже был такой вылет на 4.0
Android Studio Profiler может оказаться неподходящим инструментом для этой задачи. Сначала определите возможные утечки памяти с помощью УтечкаКанарейка и исправьте их, тогда вы сможете использовать Profiler, не останавливая/убивая потоки. Без наименьшего количества предоставленного кода это может быть лучшим возможным ответом.
Причина такого поведения, вероятно, заключается в том, что ART убивает остановившиеся потоки, в то время как профилировщик продолжает ждать их ответа, чего, очевидно, никогда не произойдет, потому что они больше не существуют.
Сообщение об ошибке исходит от ART, просто посмотрите thread_list.cc
. На Dalvik VM он может вести себя по-другому (скорее всего, принудительное закрытие из-за OOM или может привести к сбою виртуальной машины). Возможно, стоит попробовать. Доступ к нему во время профилирования также может быть вариантом, но он далеко не так удобен, как LeakCanaray.
Обновлять: в примечаниях к выпуску Android Studio 3.6.2 указано:
Improved memory leak detection for your Activities and Fragments when using Profilers.
у меня это сработало на моем устройстве Android 8 после обновления с Android 3.6.1 до 3.6.3, я предполагаю, что это была ошибка
у меня это сработало на моем устройстве Android 7 после обновления с Android 3.6.3 до 4.0, я предполагаю, что это была ошибка
Можете ли вы достоверно воспроизвести это? Если да, можете ли вы предоставить точные шаги воспроизведения/пример проекта?