KOOM——高性能在线内存监控方案
KOOM(Kwai OOM,Kill OOM)是快手性能优化团队在处理移动端 OOM 问题的过程中沉淀出的一套完整解决方案。
其中 Android Java 内存部分在 LeakCanary 的基础上进行优化,解决了在线缓存监视的性能问题,在不影响用户体验的情况下,在线采样内存并存和解析。从 2020 年春节后在快手主 APP 上线目前解决了 OOM 问题,其性能和稳定性得以改善,扛住了海量用户与设备的考验,因此决定将该项目开源以回馈社区,并欢迎大家来帮助改进。
项目背景
随着移动端业务逻辑日益复杂,4K 编解码,AR 魔表等高内存需求场景的不断扩展,OOM 问题已成为快手客户端稳定性治理的头号顽疾。在日常版本迭代过程中,间或会发生 OOM 激增,而线上环境非常复杂,仅 AB 实验就有上千种,事前预防以及事后还原都无法做到,因此急需高性能的线上内存监控方案。一期开源的 Android Java 内存监控方案,我们发现了 LeakCanary 以及美团和 UC 等发表的相关技术文章,发现了某些优化方向主要集中在内存的解析部分,而内存转储部分,一直没有方案能解决转储过程中应用冻结的问题。经过深入研究,我们发现可以利用写复制机制分叉子进程转储,满足我们的需求。
特性
高性能:KOOM 通过分叉子进程来转储 hprof 来阻止应用程序少于 100ms,它还具有高效的泄漏检测模块和快速的hprof 分析模块。
高可靠:KOOM 的性能和稳定性经受住了数亿用户和设备的测试。
少代码:您只需要初始化 KOOM,它将为您处理其他事情。还支持高级自定义配置。