写点什么

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:008067

评论

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

这样的 Python ,你学得会吗

海拥(haiyong.site)

Python 4月月更

web前端培训-程序员失业后怎样才能再就业

@零度

web前端开发

中小企业知识管理的实施策略

小炮

企业知识管理

在 Flutter 和 Dart 中取消 Future 的 3 种方法

坚果

4月日更

一文读懂 MySQL Explain 执行计划

老周聊架构

MySQL 数据库 3月月更 4月月更

【Go实现】实践GoF的23种设计模式:单例模式

元闰子

Go 设计模式 单例模式

基于Apache组件,分析对象池原理

Apache redis 构架 池化思想 对象池

Linux驱动开发-编写DS18B20驱动

DS小龙哥

4月月更

围观报名中2022第十四届南京国际人工智能产品展会

InfoQ_caf7dbb9aa8a

大数据培训-程序员职业生命周期短的原因

@零度

大数据开发

Linux之ssh-copy-id命令

入门小站

Linux

王者荣耀商城异地多活架构设计

石小天

「架构实战营」

项目经理值得一试的思维方式:项目成功方程式

禅道项目管理

项目管理 软件开发

在线OPML美化格式化工具

入门小站

工具

智能时代,应该如何培养中小学AI教师?

脑极体

JDK、Spring、Dubbo SPI 原理介绍

网易云信

Java spring

蒙牛“申”请出战 全力守“沪”战疫

科技新消息

FlyFish模版中心正式上线!快来领取社区周边礼物

云智慧AIOps社区

开源 大前端 数据可视化 大屏可视化

MySQL 是怎样通讯的?

ooooooh灰灰

Go MySQL 协议 4月月更

守“沪”第一线 蒙牛使命必达

科技新消息

架构训练营-作业七

默光

异地多活 架构训练营5期

在线XML转HTML工具

入门小站

工具

MySQL性能优化的5个维度

蝉沐风

MySQL 性能优化

【课程汇总】OpenHarmony成长计划知识赋能第二期系列课程(附链接)

OpenHarmony开发者

OpenHarmony 成长计划

vivo 短视频推荐去重服务的设计实践

vivo互联网技术

服务器 架构设计 布隆过滤器

三高Mysql - Mysql索引和查询优化(偏理论部分)

懒时小窝

MySQL 数据库

谈谈高并发系统的一些解决方案

xiaoxi666

高并发 高并发系统设计 高并发系统

我要批判架构师!

博文视点Broadview

普渡科技联合韩国VD Company参展IFS创业博览会,引爆韩国服务机器人市场

江湖老铁

报名中2022南京智博会 第十四届南京国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

基于python的struct模块实现简单的ByteBuf

歆晨技术笔记

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