Un tueur OOM sur plateforme mobile par Kwai.
中文版本请参看这里
KOOM crée une solution mobile de surveillance de la mémoire en ligne hautes performances, qui fournit un rapport détaillé lorsque des problèmes liés au MOO sont détectés et a résolu un grand nombre de problèmes de MOO dans l'application Kwai. Il est actuellement disponible sur Android .
Avec la complexité croissante de la logique métier des terminaux mobiles et la popularité progressive des scénarios nécessitant des besoins de mémoire élevés tels que le codec 4K et la montre magique AR, le problème du MOO est devenu le problème numéro un dans la gestion de la stabilité du client Kuaishou. Dans le processus d'itération quotidien des versions, des augmentations de MOO se produisent occasionnellement et l'environnement en ligne est très compliqué. Il existe des milliers d’expériences AB. La pré-prévention et le post-rétablissement ne peuvent pas être réalisés. Par conséquent, des solutions de surveillance de la mémoire en ligne hautes performances sont nécessaires de toute urgence.
Alors, comment construire la gouvernance du MOO ? À l'heure actuelle, KOOM a la capacité de surveiller les fuites de Java Heap/Native Heap/Thread, et élaborera à l'avenir une surveillance de scénarios multidimensionnels et multi-métiers.
koom-java-leak
est utilisé pour la surveillance des fuites du tas Java : il utilise le mécanisme de copie sur écriture pour créer le dump du processus enfant Java Heap, ce qui résout le problème. L'application se bloque longtemps pendant le dump. Pour plus de détails, veuillez vous référer à icikoom-native-leak
est une solution de surveillance des fuites du tas natif : utilisez le mécanisme de récupération de place Tracing pour analyser l'intégralité du tas natif et affichez directement les informations de mémoire divulguées telles que : taille/allocation des piles/etc. ; réduit considérablement le coût d’analyse et de résolution des fuites de mémoire pour les étudiants en commerce. Pour plus de détails, veuillez vous référer à icikoom-thread-leak
est utilisé pour la surveillance des fuites de thread : il accroche la fonction de cycle de vie du thread et rapporte périodiquement les informations sur le thread divulguées. Pour plus de détails, veuillez vous référer à ici Tous les modules natifs prennent en charge deux modes d'accès, c++_shared et c++_static. Pour plus de détails, veuillez vous référer à cpp-support.
dependencies {
// In shared mode, multiple modules share the same libc++_shared.so (STL), and the package
// size is small, but when multiple modules depend on different STL versions, the final
// compilation will conflict. For example, you might get "dlopen failed: cannot locate symbol
// "__emutls_get_address" referenced by" errors.
implementation " com.kuaishou.koom:koom-java-leak: ${ latest_version } "
// Or in static mode, each module has its own STL, the package size is large, and there are no
// compilation and runtime problems.
implementation " com.kuaishou.koom:koom-java-leak-static: ${ latest_version } "
// If you depend on multiple modules, the shared and static modes cannot be mixed.
// The following way is wrong, remember!
implementation " com.kuaishou.koom:koom-java-leak-static: ${ latest_version } "
implementation " com.kuaishou.koom:koom-monitor-base: ${ latest_version } "
}
pickFirst
dans le répertoire racine du projet build.gradle: packagingOptions {
// Select the first libc++_shared.so when packaging apk, it may encounter unpredictable bugs
// at runtime, use it with caution!
pickFirst ' lib/*/libc++_shared.so '
}
< uses-sdk tools : overrideLibrary = " com.kwai.koom.fastdump, com.kwai.android.base, com.kwai.koom.base " />
KOOM est sous licence Apache 2.0. Pour plus de détails, consultez la LICENCE.
Consultez le CHANGELOG.md pour plus de détails sur l’historique des modifications.
Si vous souhaitez contribuer, consultez CONTRIBUTING.md
Bienvenue à signaler les problèmes ou contactez-nous dans le groupe WeChat.