1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-KOOM

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

KOOM

OOM-киллер от Kwai для мобильной платформы.

中文版本请参看这里

Введение

KOOM — это высокопроизводительное решение для мониторинга памяти в режиме онлайн, которое предоставляет подробный отчёт при обнаружении проблем, связанных с OOM (нехваткой памяти). Оно уже решило большое количество проблем с OOM в приложении Kwai и на данный момент доступно на Android.

Из-за растущей сложности бизнес-логики мобильных терминалов и постепенного распространения сценариев с высокими требованиями к памяти, таких как кодек 4K и AR Magic Watch, проблема OOM стала главной проблемой в управлении стабильностью клиента Kuaishou. В процессе ежедневной итерации версий иногда возникают всплески OOM, а онлайн-среда очень сложна. Существует тысячи AB-экспериментов. Предотвращение и восстановление после сбоев невозможны. Поэтому срочно необходимы высокопроизводительные решения для мониторинга памяти в реальном времени.

Как построить управление OOM? На данный момент KOOM может отслеживать утечки Java Heap/Native Heap/Thread и в будущем будет создавать многомерные и мультибизнес-сценарии мониторинга.

Функции

Монитор утечек Java

  • Модуль koom-java-leak используется для мониторинга утечек Java Heap: он использует механизм Copy-on-write для разветвления дочернего процесса дампа Java Heap, что решает проблему. Приложение надолго зависает во время дампа. Для получения более подробной информации см. здесь.

Монитор Native утечек

  • Модуль koom-native-leak представляет собой решение для мониторинга Native Heap утечек: он использует механизм Tracing garbage collection для анализа всей Native Heap и напрямую выводит информацию об утечке памяти, такую как размер/выделение стеков и т. д.; значительно снижает затраты на анализ и устранение утечек памяти для бизнес-студентов. Для получения дополнительной информации см. здесь.

Монитор Thread утечек

  • Модуль koom-thread-leak используется для отслеживания утечек Thread: он перехватывает функцию жизненного цикла потока и периодически сообщает об утечках потока. Для получения подробной информации см. здесь.

Поддержка STL

Все модули Native поддерживают два режима доступа: c++_shared и c++_static. Для получения дополнительных сведений см. cpp-support.

  • Добавьте зависимость в проект build.gradle (возьмём koom-java-leak в качестве примера):
dependencies {
  // В общем режиме несколько модулей совместно используют один и тот же libc++_shared.so (STL), и размер пакета невелик, но когда несколько модулей зависят от разных версий STL, окончательная компиляция будет конфликтовать. Например, вы можете получить ошибки «dlopen failed: cannot locate symbol
  // "__emutls_get_address" referenced by».
  implementation "com.kuaishou.koom:koom-java-leak:${latest_version}"
  // Или в статическом режиме каждый модуль имеет свой собственный STL, размер пакета большой, и нет проблем с компиляцией и временем выполнения.
  implementation "com.kuaishou.koom:koom-java-leak-static:${latest_version}"
  // Если вы зависите от нескольких модулей, общий и статический режимы не могут быть смешаны. Следующий способ неверен, помните!
  implementation "com.kuaishou.koom:koom-java-leak-static:${latest_version}"
  implementation "com.kuaishou.koom:koom-monitor-base:${latest_version}"
}
  • Предложите способ разрешения конфликта общего режима, добавьте pickFirst в корневой каталог проекта build.gradle:
packagingOptions {
  // Выберите первый libc++_shared.so при упаковке apk, это может привести к непредсказуемым ошибкам во время выполнения, используйте его с осторожностью!
  pickFirst 'lib/*/libc++_shared.so'
}

minSdk

  • minSdk всех модулей равен 18. Если minSdk вашего приложения ниже этого значения, необходимо... Совместимость с overrideLibrary в манифесте
  <uses-sdk tools:overrideLibrary="com.kwai.koom.fastdump, com.kwai.android.base, com.kwai.koom.base" />

License

KOOM находится под лицензией Apache 2.0. Подробности смотрите в LICENSE.

Change Log

Подробности истории изменений смотрите в CHANGELOG.md.

Contributing

Если вы хотите внести свой вклад, ознакомьтесь с CONTRIBUTING.md.

Обратная связь

Добро пожаловать в отчёт об проблемах или свяжитесь с нами в группе WeChat.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-KOOM.git
git@api.gitlife.ru:oschina-mirror/mirrors-KOOM.git
oschina-mirror
mirrors-KOOM
mirrors-KOOM
master