QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Lyft 如何检测生产中安卓的内存泄漏

  • 2023-03-22
    北京
  • 本文字数:849 字

    阅读完需:约 3 分钟

Lyft如何检测生产中安卓的内存泄漏

尽管现代的安卓和 iOS 工具都能通过本地构建检测内存泄露风险,但应用程序在生产环境中的内存表现却依旧得不到百分百的保障。生产环境中的程序可能在各种条件下运行在各种设备上,为此,Lyft的工程师将A/B测试与内存可观察性相结合,从而检测可能造成内存泄漏的应用功能。


在发布大型且复杂的功能点时,我们需要特别关注其在内存使用方面是否会造成回归。这点在包含本地 C/C++代码的功能发布时更为关键,因为这部分代码更易于引入内存泄漏。


在一般情况下,Lyft 工程师所遵循的方式是用测量的应用程序的标准内存行为基线,对比在 A/B 测试中所采集的特定功能受众子群数据。在评估应用的整体内存使用上,Lyft 工程师考虑了几款安卓上可用来检索内存使用指标的API:比例集大小(PSS)、唯一集大小(USS)、常驻内存大小(RSS)。其中 RSS 因其在性能方面的特点,以及可以不受采样率限制的特性而脱颖而出。其他 Lyft 工程师们感兴趣的指标,如 JVM 堆和本地堆大小等,都支持在安卓运行时直接采集。


内存指标的重要采集场景有两种:每次 UI 界面关闭时,以及用户在同一界面长时间停留的情况下每分钟的采集间隔。


因此,为判断一项功能是否会造成内存回归,Lyft 工程师对比了用户群组在运行禁用该功能时的原始版本,与启用该功能应用版本的情况。内存使用情况随用户而异,故而将应用内存使用足迹以曲线形式显示,如果两种情况下内存足迹曲线出现,则表示可能存在内存回归情况,如下图表示:



一个有趣的发现是,内存泄漏只影响一小部分用户。因此,除了百分比较高的部分(取决于用户群组大小),内存足迹曲线实际是会几乎重合的。如下图中所示,内存泄漏只会发生在极特殊的情况下,仅影响用户群组的最后一段百分比。



Lyft 的工程师称,这种方式已被证明可以有效检测内存泄漏,尤其是特殊情况下极易在本地测试时遗漏的内存泄露。还请不要错过 Lyft 原文中的全部细节。


原文链接

How Lyft Detects Android Memory Leaks in Production


相关阅读:

探索 Android 14:首个开发者预览版的新功能与特性

Spotify 移动工程平台迁移:将 Android 和 iOS 代码库迁移到 Bazel

2023-03-22 08:007799

评论

发布
暂无评论
发现更多内容

openGauss:共建数据库根社区,打造开源数据库核心竞争力

再次!openGauss荣获中国软协产业协会多个奖项

区块链数字代币燃烧模式开发技术方案丨(成熟技术)

I8O28578624

Josh × 微帧科技,为印度TOP短视频平台提供视频编码服务

微帧Visionular

音视频 视频编码 音视频技术

Qz学算法-数据结构篇(查找算法--线性、二分)

浅辄

数据结构 三周年连更

用友联合7家信创生态伙伴成立“信创领先实践联盟”,助力企业数智化国产替代

用友BIP

黄凯耀:深度解读openGauss架构创新与新特性

宠物行业如何做留存?答案都在这里了!

游读分享

阿里逆天级调优方案,内部这套Java性能调优实战宝典,堪称教科书

做梦都在改BUG

Java 性能优化 性能调优

连接OpenAI两大智能产品Whisper & DALL·E,实现智能语音转文本/文本转图像

集简云开放平台

AI 智能 openai 数据集成平台 AI绘画

JUnit 5 参数化测试

码语者

Java JUnit

Java 应用程序在 Kubernetes 上棘手的内存管理

Java你猿哥

Kubernetes JVM ssm requests limits

Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)

汀丶人工智能

人工智能 机器学习 深度学习 Gradio streamlit

沉默的618下,美妆品牌如何踏上破局之路?

游读分享

语雀-使用指南

六月的雨在InfoQ

在线文档 在线协同文档 三周年连更 语雀

阿里“宝妈级”之作,这份Spring Security应用到源码手册,全是精华

做梦都在改BUG

Java spring spring security

openGauss数据库源码解析系列文章——执行器解析(三)

用户订阅付费如何拆解分析?看这篇就够了

HarmonyOS SDK

HMS Core

Nginx常用配置及和基本功能讲解

京东科技开发者

nginx 负载均衡 正向代理与反向代理 企业号 4 月 PK 榜 Nginx入门

算法题每日一练:最长递增子序列

知心宝贝

数据结构 算法 前端 后端 三周年连更

路由器、网桥和交换机

测吧(北京)科技有限公司

测试

分布式多级缓存系统设计与实战

做梦都在改BUG

分布式 系统设计 多级缓存

复旦MOSS大模型开源了!Github和Hugging Face同时上线

Openlab_cosmoplat

人工智能 开源项目 ChatGPT

孔再华:openGauss在民生银行的应用实践

精彩回顾 | DTC模式构建全域消费者增长指南

游读分享

软件测试/测试开发丨Pytest 自动化测试框架(四)

测试人

软件测试 自动化测试 测试开发 pytest

迪斯克Disrupt DEX众筹挖矿系统开发技术

薇電13242772558

dapp

李士福:openGauss 自驾驶数据库内核在AI领域的探索和创新

深扒Sentinel背后的实现原理之后,我终于明白它为什么这么强了

Java你猿哥

Java spring ssm Sentine

使用AI优化慢SQL,开发秒变DBA

NineData

sql AI 开发者 dba NineData

流量即生意!红海中的茶饮品牌如何做增量?

游读分享

Lyft如何检测生产中安卓的内存泄漏_移动_Sergio De Simone_InfoQ精选文章