ThreadLeakMonitor: введение
Используется для мониторинга проблем с утечкой потоков в приложении. Основной принцип работы:
Область применения ThreadLeakMonitor:
Подключение к ThreadLeakMonitor
Конфигурация зависимостей:
repositories {
mavenCentral()
}
dependencies {
implementation "com.kuaishou.koom:koom-thread-leak:${latest_version}"
implementation "com.kuaishou.koom:xhook:${latest_version}"
}
Использование:
val config = ThreadMonitorConfig.Builder()
.enableThreadLeakCheck(30 * 1000L, 60 * 1000L) // устанавливаем интервал опроса равным 30 с, а задержку обнаружения утечки потока — 1 мин
.setListener(listener)
.build()
MonitorManager.addMonitorConfig(config)
ThreadMonitor.startTrackAsync()
ThreadMonitor.stop()
val listener = object : ThreadLeakListener {
override fun onReport(leaks: MutableList<ThreadLeakRecord>) {
leaks.forEach {
MonitorLog.i(ThreadLeakTestActivity.LOG_TAG, it.toString())
}
}
override fun onError(msg: String) {
MonitorLog.e(ThreadLeakTestActivity.LOG_TAG, msg)
}
}
Часто задаваемые вопросы
— Почему не поддерживается оборудование ниже Android N? — Учитывая потери производительности при мониторинге потоков и общие проблемы с потоками, мониторинг устройств выше Android N должен решить большинство проблем.
— Почему не поддерживается armeabi-v7a? — При получении стека распределения памяти мы использовали FP Unwind (frame pointer unwind). В armeabi-v7a используется смешанный набор инструкций ARM/Thumb, и FP Unwind ненадёжен на стеке смешанных инструкций ARM/Thumb. Кроме того, AArch32 (Arm 32-bit Architecture) ABI не определяет поведение FP.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )