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

OSCHINA-MIRROR/mirrors-KOOM

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.zh-CN.md 6.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 09:21 dfaf295

KOOM — высокопроизводительное решение для мониторинга памяти в режиме онлайн

KOOM (Kwai OOM, Kill OOM) — это комплексное решение проблемы нехватки памяти (OOM), разработанное командой по оптимизации производительности Kwai.

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

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

Функции KOOM

  • Контроль утечки памяти Java Heap: модуль koom-java-leak используется для контроля утечки памяти Java Heap. Он использует механизм Copy-on-write для создания дочернего процесса и дампа памяти Java Heap, решая проблему длительного замораживания приложения во время процесса дампа. Подробнее см. здесь.
  • Контроль утечки Native Heap: модуль 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 {
  // shared режим: несколько модулей совместно используют один и тот же libc++_shared.so, пакет меньше, но при конфликте версий STL в нескольких модулях может возникнуть конфликт при компиляции. Например, может появиться ошибка «dlopen failed: cannot locate symbol "__emutls_get_address" referenced by».
  implementation "com.kuaishou.koom:koom-java-leak:${latest_version}"
  // или static режим: пакет больше, без проблем с компиляцией и выполнением.
  implementation "com.kuaishou.koom:koom-java-leak-static:${latest_version}"
  // Если вы зависите от нескольких модулей, нельзя смешивать shared и static режимы!
  implementation "com.kuaishou.koom:koom-monitor-base:${latest_version}"
}

Ознакомьтесь с методом решения конфликтов в shared режиме: в файле build.gradle корневого каталога проекта добавьте pickFirst:

packagingOptions {
  // При упаковке apk выбирается первый libc++_shared.so. Во время выполнения могут возникнуть непредвиденные ошибки, используйте с осторожностью!
  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" />

Лицензия KOOM открыт под лицензией Apache-2.0. Подробную информацию см. в LICENSE.

История версий Подробную историю версий см. в CHANGELOG.md.

Участие в разработке Если вы заинтересованы в участии, см. CONTRIBUTING.md.

Проблемы и обратная связь Вы можете задать вопросы и оставить отзывы, создав issues.

Контакты Руководитель проекта: alhah (薛秋实). Основные участники:

  • alhah (薛秋实);
  • AndroidInternal (李锐);
  • lbtrace (王连宝);
  • shenvsv (沈冠初). Группа обсуждения в WeChat: .

Опубликовать ( 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