写点什么

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

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

    阅读完需:约 3 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

尽管现代的安卓和 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:005904

评论

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

AE脚本-图层分布路径形状高级控制 Tweaks

Rose

音视频小程序在教育行业的应用发展是短期爆发or未来趋势?

Geek_2305a8

软件测试开发/全日制/测试管理丨用户端 Web 自动化测试

测试人

软件测试 自动化测试 测试开发 Web自动化测试 web测试

使用AI搭建SpringBoot服务

X.F

AI Openjdk Java' openai Bard

医疗机构如何释放数据要素价值 推动数据资产化

用友BIP

数据资产

软件测试开发/全日制/测试管理丨Docker容器技术

测试人

Docker 软件测试 容器技术 测试开发

CAE技术的局限性讨论-CAE咨询

智造软件

CAE CAE软件

业务无忧:稳定云虚拟主机让您的在线业务更加顺畅

一只扑棱蛾子

虚拟主机 云虚拟主机

软件测试开发/全日制/测试管理丨接口测试抓包与 Mock/接口自动化

测试人

软件测试 接口测试 测试开发 Mock

阿里云 EMAS & 魔笔:12月产品动态

移动研发平台EMAS

UV映射技巧和窍门

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图 UV纹理贴图 UV映射

UV贴图和展开初学者指南

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图 UV纹理贴图 UV映射

什么是多边形网格以及如何编辑它?

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图 UV纹理贴图 UV映射

如何选择适合自己的外贸独立站域名?

九凌网络

如何选择适合自己的外贸独立站域名?

九凌网络

软件测试开发/全日制/测试管理丨用户端 App 自动化测试

测试人

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

鸿蒙系统应用开发之开发准备

EquatorCoco

华为 系统开发 鸿蒙系统

了解什么是UV纹理?

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图 UV纹理贴图 UV映射

Apache Flink 和 Paimon 在自如数据集成场景中的使用

Apache Flink

大数据 flink 实时计算

NeurIPS’23 Paper Digest | 如何把 LLM 的推理能力应用于事件序列预测?

可信AI进展

人工智能 机器学习 推理 推理模型 算法、

软件测试开发/全日制/测试管理丨性能测试

测试人

低代码平台几分钟构建一个内部应用程序

高端章鱼哥

开发工具 低代码开发 JNPF

AE脚本-快速创建微风摇曳摆动波浪动画 Breeze

Rose

软件测试开发/全日制/测试管理丨接口功能测试

测试人

软件测试 自动化测试 接口测试 测试开发 测试管理

2024年最热门的15个科技工作岗位

互联网工科生

程序员 科技 岗位

亚马逊云科技助力施耐德电气加速AI技术在制造场景的落地与创新

财见

DAPP、链游、交易所和区块链钱包开发

区块链软件开发推广运营

交易所开发 区块链开发 链游开发 公链开发 区块链开发DAPP开发

一文详解VScode 的远程开发

快乐非自愿限量之名

远程开发 vs-code

Postgres 中文周报:PostgreSQL 2023 热门回顾

酷克数据HashData

GaussDB(for MySQL)新特性TDE发布:支持透明数据加密

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(for MySQL)

面向研发使用、全栈开发、前后端分离的低代码平台

互联网工科生

软件开发 前后端分离 低代码 全栈开发

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