KOOM — высокопроизводительное решение для мониторинга памяти в режиме онлайн
KOOM (Kwai OOM, Kill OOM) — это комплексное решение проблемы нехватки памяти (OOM), разработанное командой по оптимизации производительности Kwai.
С ростом сложности бизнес-логики мобильных приложений проблема OOM становится всё более актуальной для обеспечения стабильности работы клиентских приложений Kwai. В процессе ежедневного обновления версий приложения могут возникать внезапные всплески OOM, а среда онлайн-работы сложна и включает тысячи вариантов AB-тестирования. Поэтому существует острая необходимость в высокопроизводительном решении для мониторинга памяти онлайн.
Как организовать управление OOM? На данный момент KOOM уже обладает способностью контролировать утечку памяти Java Heap, Native Heap и Thread. В будущем планируется расширить охват на другие аспекты и сценарии мониторинга.
Функции KOOM
Поддержка 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 (薛秋实). Основные участники:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )