Комментарии 4
В нашей компании для контроля утечек кода используются:
Отмечу еще полезные инструменты, которые мы используем для улучшения качества кода (пусть и не связано с утечками):
- Leak Canary.
- Статический анализ кода (встроенный и Infer).
- Генерация HPROF-файла во время инструментальных тестов и последующий анализ этого файла (Memory Monitor в конечном итоге показывает те же данные). Замечу, что в начале мы использовали Monkey, но потом отказались из-за его недостаточной гибкости и вручную написали все UI-манипуляции с помощью Espresso.
Отмечу еще полезные инструменты, которые мы используем для улучшения качества кода (пусть и не связано с утечками):
- StrictMode, контроль производительности приложения.
- Checkstyle, некоторые правила помимо улучшения стиля кода, косвенно помогают найти потенциальные проблемы — например, требование везде использовать final помогает более тщательно подходить к использованию переменных, и это в конечном счете влияет на использование памяти.
Большой спасибо за комментарий, он очень полезен и информативен.
— В отношении применения Leak Canary Leak Canary у нас возникли сложности, из коробки она чекает утечки только между активити, в нашем же приложении 2 активити (одна из них — это форма авторизации). Вы самостоятельно расширяли возможности этой библиотечки или вам было достаточно этого?
— У нас так же используется принудительный статический анализ кода
— На данный момент, мой коллега как раз занимается написанием UI-автотестов используя Espresso с выводом логов и скриншотов в Spoon
В отношении дополнительных полезных инструментов StrictMode и Checkstyle попытаюсь с ними разобраться и проанализирую возможность их применения у нас
— В отношении применения Leak Canary Leak Canary у нас возникли сложности, из коробки она чекает утечки только между активити, в нашем же приложении 2 активити (одна из них — это форма авторизации). Вы самостоятельно расширяли возможности этой библиотечки или вам было достаточно этого?
— У нас так же используется принудительный статический анализ кода
— На данный момент, мой коллега как раз занимается написанием UI-автотестов используя Espresso с выводом логов и скриншотов в Spoon
В отношении дополнительных полезных инструментов StrictMode и Checkstyle попытаюсь с ними разобраться и проанализирую возможность их применения у нас
По Leak Canary: нам встроенных возможностей было достаточно. Даже с одним активити можно тестировать утечки, просто надо закрывать приложение через кнопку «Назад» (так активируется весь нужный жизненный цикл и приложение на некоторое время «засыпает», что позволяет делать проверку памяти), а не через список приложений (через список идет просто операция kill). Другие варианты:
P. S. Сорри за долгий ответ, гугл почему-то решил поместить сообщения с хабра в спам.
- Сделать отдельное активити для тестирования, и переходить в него по скрытой кнопке (активируется константами в коде или отдельной сборкой). Дополнительное достоинство: можно в это активити выводить другую отладочную информацию.
- Использовать RefWatcher напрямую с подозрительными объектами (фрагментами, потоками и другими высокоуровневыми примитивами).
P. S. Сорри за долгий ответ, гугл почему-то решил поместить сообщения с хабра в спам.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Утечки памяти в Android и способы их локализации