Kwai의 모바일 플랫폼용 OOM 킬러입니다.
中文版本请参看这里
KOOM은 OOM 관련 문제가 감지되면 자세한 보고서를 제공하고 Kwai 애플리케이션의 수많은 OOM 문제를 해결하는 모바일 고성능 온라인 메모리 모니터링 솔루션을 만듭니다. 현재 Android 에서 사용할 수 있습니다.
모바일 단말 비즈니스 로직의 복잡성이 증가하고 4K 코덱, AR 매직워치 등 메모리 요구 사항이 높은 시나리오가 점차 대중화됨에 따라 OOM 문제는 Kuaishou 클라이언트의 안정성 관리에 있어 가장 큰 문제가 되었습니다. 일일 버전 반복 과정에서 가끔 OOM 급증이 발생하고 온라인 환경이 매우 복잡합니다. 수천 개의 AB 실험이 있습니다. 사전 예방과 사후 복구가 불가능합니다. 따라서 고성능 온라인 메모리 모니터링 솔루션이 절실히 필요하다.
그렇다면 OOM 거버넌스는 어떻게 구축되어야 할까요? 현재 KOOM은 Java 힙/네이티브 힙/스레드 누출 모니터링 기능을 갖추고 있으며 향후 다차원 및 다중 비즈니스 시나리오 모니터링을 구축할 예정입니다.
koom-java-leak
모듈은 Java 힙 누출 모니터링에 사용됩니다. 이 모듈은 쓰기 시 복사 메커니즘을 사용하여 하위 프로세스 덤프 Java 힙을 포크하여 문제를 해결합니다. 덤프하는 동안 앱이 오랫동안 정지됩니다. 자세한 내용은 여기를 참고하세요koom-native-leak
모듈은 기본 힙 누출 모니터링 솔루션입니다. 추적 가비지 수집 메커니즘을 사용하여 전체 기본 힙을 분석하고 다음과 같은 누출된 메모리 정보를 직접 출력합니다. 크기/스택 할당/등. 경영학도의 메모리 누수 분석 및 해결 비용을 크게 줄여줍니다. 자세한 내용은 여기를 참고하세요koom-thread-leak
모듈은 스레드 누출 모니터링에 사용됩니다. 스레드의 수명 주기 기능을 연결하고 누출된 스레드 정보를 주기적으로 보고합니다. 자세한 내용은 여기를 참고하세요 모든 네이티브 모듈은 c++_shared 및 c++_static의 두 가지 액세스 모드를 지원합니다. 자세한 내용은 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
추가하세요. 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은 Apache 라이센스 2.0을 따릅니다. 자세한 내용은 LICENSE를 확인하세요.
변경 내역에 대한 자세한 내용은 CHANGELOG.md를 확인하세요.
기여에 관심이 있다면 CONTRIBUTING.md를 확인하세요.
보고서 문제를 환영하거나 WeChat 그룹에 문의하세요.