Pembunuh OOM di platform seluler oleh Kwai.
中文版本请参看这里
KOOM menciptakan solusi pemantauan memori online berkinerja tinggi seluler, yang memberikan laporan terperinci ketika masalah terkait OOM terdeteksi, dan telah memecahkan sejumlah besar masalah OOM di aplikasi Kwai. Saat ini tersedia di Android .
Dengan meningkatnya kompleksitas logika bisnis terminal seluler dan popularitas skenario dengan kebutuhan memori tinggi secara bertahap seperti codec 4K dan jam tangan ajaib AR, masalah OOM telah menjadi masalah nomor satu dalam manajemen stabilitas klien Kuaishou. Dalam proses iterasi versi harian, lonjakan OOM terkadang terjadi, dan lingkungan online menjadi sangat rumit. Ada ribuan eksperimen AB. Pra-pencegahan dan pasca pemulihan tidak dapat dicapai. Oleh karena itu, solusi pemantauan memori online berkinerja tinggi sangat dibutuhkan.
Lalu bagaimana seharusnya tata kelola OOM dibangun? Saat ini, KOOM memiliki kemampuan memantau kebocoran Java Heap/Native Heap/Thread, dan akan membangun pemantauan skenario multi-dimensi dan multi-bisnis di masa depan.
koom-java-leak
digunakan untuk pemantauan kebocoran Java Heap: modul ini menggunakan mekanisme Copy-on-write untuk membagi proses anak dump Java Heap, yang memecahkan masalah. Aplikasi terhenti untuk waktu yang lama selama dump. Untuk detailnya, silakan lihat di sinikoom-native-leak
adalah solusi pemantauan kebocoran Native Heap: gunakan mekanisme pengumpulan sampah Tracing untuk menganalisis seluruh Native Heap, dan secara langsung mengeluarkan informasi memori yang bocor seperti: ukuran/Mengalokasikan tumpukan/dll.; sangat mengurangi biaya analisis dan penyelesaian kebocoran memori bagi mahasiswa bisnis. Untuk detailnya, silakan lihat di sinikoom-thread-leak
digunakan untuk pemantauan kebocoran thread: modul ini mengaitkan fungsi siklus hidup thread, dan secara berkala melaporkan informasi thread yang bocor. Untuk detailnya, silakan lihat di sini Semua modul Native mendukung dua mode akses, c++_shared dan c++_static. Untuk detailnya, silakan merujuk ke dukungan cpp.
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
di direktori root proyek 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 berada di bawah lisensi Apache 2.0. Untuk detailnya, lihat LISENSI.
Lihat CHANGELOG.md untuk detail riwayat perubahan.
Jika Anda tertarik untuk berkontribusi, lihat CONTRIBUTING.md
Selamat datang melaporkan masalah atau hubungi kami di grup WeChat.