Мое приложение перестает отвечать, когда я запускаю его в режиме профилирования

У меня возникает несколько ошибок 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

Любая помощь приветствуется заранее.

Можете ли вы достоверно воспроизвести это? Если да, можете ли вы предоставить точные шаги воспроизведения/пример проекта?

Ryan M 23.03.2020 05:17

Извините, больше нет. Я сменил работу некоторое время назад и больше не имею доступа к этому коду. Прошло уже 11 месяцев :) В любом случае спасибо.

Pedro Malta 23.03.2020 15:03

@RyanM Я всегда могу воспроизвести это, в основном на Android 8.0.

kaitian521 24.03.2020 13:48

@ kaitian521 Можете ли вы воспроизвести только что созданный проект на другом компьютере?

Enselic 27.03.2020 09:17

@Enselic Я позволил моему колледжу попробовать, он тоже может размножаться

kaitian521 27.03.2020 09:39

Я думаю, это ошибка. но я не уверен. однако я думаю, что вам следует обновить свою студию Android до последней версии. возможно исправят :)

hamid keyhani 29.03.2020 23:55

Тот факт, что вы и ваш коллега можете воспроизвести проблему, мало помогает, а никто из нас не может ее воспроизвести. Скорее всего виновата утечка, о которой можно только догадываться, не предоставив ни малейшего кода.

Martin Zeitler 30.03.2020 04:25

Я обновляю Android Studio до 4,1, тоже разбился...

kaitian521 30.03.2020 04:31

@ kaitian521 Попробуйте один раз с Android Studio 3.6.2 (тем не менее, утечку необходимо устранить).

Martin Zeitler 15.04.2020 01:22

Я получил это на Studio 4.0

Pascal Ganaye 05.07.2020 15:46

тоже был такой вылет на 4.0

hch 16.09.2020 08:43
15
11
1 613
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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, я предполагаю, что это была ошибка

quealegriamasalegre 21.04.2020 02:34

у меня это сработало на моем устройстве Android 7 после обновления с Android 3.6.3 до 4.0, я предполагаю, что это была ошибка

kaitian521 08.06.2020 09:40

Другие вопросы по теме