Pull to refresh

Comments 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: нам встроенных возможностей было достаточно. Даже с одним активити можно тестировать утечки, просто надо закрывать приложение через кнопку «Назад» (так активируется весь нужный жизненный цикл и приложение на некоторое время «засыпает», что позволяет делать проверку памяти), а не через список приложений (через список идет просто операция kill). Другие варианты:

  • Сделать отдельное активити для тестирования, и переходить в него по скрытой кнопке (активируется константами в коде или отдельной сборкой). Дополнительное достоинство: можно в это активити выводить другую отладочную информацию.
  • Использовать RefWatcher напрямую с подозрительными объектами (фрагментами, потоками и другими высокоуровневыми примитивами).


P. S. Сорри за долгий ответ, гугл почему-то решил поместить сообщения с хабра в спам.
Sign up to leave a comment.