Facebook 的 iOS 内存泄漏监测自动化实践

facebook ios 内存泄漏

内存是移动设备上的共享资源,如果一个 App 无法正确地进行内存管理的话,将会导致内存消耗殆尽,闪退以及性能的严重下降。

Facebook 的 iOS 版本的许多功能模块共用了同一份内存空间,如果其中的某一个模块消耗了特别多的内存资源的话,将会对整个 App 造成严重影响。举个栗子,当某个功能模块不小心造成了内存泄漏的时候,这个情况就很有可能会发生。

在 Facebook,我们有非常多的工程师同时在一个代码仓库下进行并行开发。内存泄漏是在开发过程中难以避免会遇见的问题。当内存泄漏发生时,我们就需要快速地去发现然后修复它。

现在已经存在一些开发者工具来辅助发现内存泄漏了,但是它们的共同点是需要大量的人工操作:

  1. 打开 Xcode 并选择 build for profiling 来编译你的工程
  2. 打开 Instruments 工具
  3. 尝试在你的应用上尽可能多地重现更多的场景与行为
  4. 观察内存工具的走势图
  5. 找到内存泄漏的源头
  6. 修复它!

这样的人工排查与修复工程每次都得不断地重复操作。正因为如此,我们很难在迭代阶段早期就定位与修复内存问题。

将内存泄漏的排查过程尽可能地自动化,减少开发人员的人工干预,可以帮助我们更快地去找到内存泄漏的地方。为了解决这个问题,我们已经在内部开发了一套工具来帮助我们自动化这个排查过程,并且已经帮助我们解决了许多代码中存在的内存泄漏问题。今天,我们很高兴向大家宣布我们正式开源这套内存泄漏排查工具:FBRetainCycleDetector,FBAllocationTracker 和 FBMemoryProfiler。

循环引用

Objective-C 使用引用计数来管理内存与释放未被引用的对象。内存中的对象 A 可以让对象 B 的引用计数加一,即 retain,来使对象 B 尽可能久地存在内存中(只要对象 A 不对它“减一”,即 release)。也就是说:对象 A 持有了对象 B 。

大多数情况下,引用计数这套机制都可以运作得很好。但是,当两个对象直接地,或者更常见的情形是通过某些对象间接地,互相持有了对方,这个时候就陷入了僵局了。这种互相持有对方的引用的现象叫做循环引用。

阅读全文请点击:http://click.aliyun.com/m/9168/


相关推荐

  • 移动端混合型App(hybrid app)自动化测试选型与实践 来源:潜龙0318​原文http://www.cnblogs.com/zzzhuxf/p/3860647.html背景公司产品的业务已经发展到了移动端,开发选型已经结束,决定使用phonegap做移动端的web应用开发平台。考虑
  • 第七章 接口自动化之本接口文档(转) 第七章接口自动化之本接口文档(2015-04-0916:31:38)标签:接口自动化测试接口文档分类:PHPUNIT接口自动化教程------phpunit接口自动化测试系列作为接口自动化测试教程的最后一章,我们来讲述一下影响接口自动化测试
  • 第四章 接口自动化测试用例详解(下)(转) 第四章接口自动化测试用例详解(下)(2015-04-0315:13:12)标签:接口自动化测试接口自动化测试用例详分类:PHPUNIT接口自动化教程------phpunit接口自动化测试系列4.2Post接口自动化测试用例Post方式的接
  • 第四章 接口自动化测试用例详解(上)(转) 第四章接口自动化测试用例详解(上)(2015-04-0315:03:40)标签:接口自动化测试接口自动化测试用例详分类:PHPUNIT接口自动化教程------phpunit接口自动化测试系列经过前三章的学习,我们准备好了对接口进行自动化测
  • 第一章 接口自动化简述(转) 第一章接口自动化简述(2015-03-2010:03:25)标签:自动化教程接口自动化测试分类:PHPUNIT接口自动化教程------phpunit接口自动化测试系列随着移动设备的普及,手机App,HTML5站点的应用越来越广泛。现在公司
  • 我国工业自动化市场现状分析报告(第一章 工业自动化) 本章目录一、工业自动化技术简介二、工业自动化与工业信息化的关系三、自动化系统结构1、企业管理决策系统层(ERP)2、过程控制层(PCS)(1)过程控制(2)设备管理(3)集成的模块软件(4)业务管理和执行(5)智能化现场设备四、工业自动化系
  • 第一章 接口自动化简述 文章来源:潜龙0318的博客------phpunit接口自动化测试系列随着移动设备的普及,手机App,HTML5站点的应用越来越广泛。现在公司的宣传和推广也越来越多样化,网站,App和WAP站同时存在着。可能在公司发展的初期,这三方面是各
  • Selenium + Python的自动化框架搭建 selenium是一个web的自动化测试工具,和其它的自动化工具相比来说其最主要的特色是跨平台、跨浏览器。支持windows、linux、MAC,支持ie、ff、safari、opera、chrome等。此外还有一个特色是支持分布式测试用例
  • <DIV><STRONG> 一、  配电自动化简介</STRONG> 一、配电自动化简介配电自动化指:利用现代电子技术、通信技术、计算机及网络技术与电力设备相结合,将配电网在正常及事故情况下的监测、保护、控制、计量和供电部门的工作管理有机地融合在一起,改进供电质量,与用户建立更密切更负责的关系,以合理的价格满
  • 选择翻译的未来(TAUS)-来源: 翻译自动化用户协会(TAUS) 作者:JaapvanderMeer,翻译自动化用户协会(TAUS)译者:崔启亮,中国翻译协会本地化服务委员会(TACLSC)语言服务领域的技术姗姗来迟。语言服务技术将改变一切,在不远的将来,世人都能在讲自己的语言时,别人都能听明白。我们正进
  • TwinCAT v2.10.0 1CD(自动化软件)+TwinCAT PLC使用手册 Beckhoff产品:TwinCATv2.10.01CD(自动化软件)TwinCATPLC使用手册RockwellAutomation产品:RSLogix.5000.v15.01-ISO1CD(可编程控制软件) Cadsoft产品:Cads
  • 50国智能电网投资2260亿美元 配电自动化约占490亿美元 查看原文:http://www.gongkongjia.com/news/N2389.html东北集团日前发布第五版新兴市场智能电网发展报告称,到2026年,全球50个新兴市场国家的智能电表覆盖率将达到61%。这50个新兴市场国家主要分布在

你的评论

就没有什么想说的吗?

最新博客

关于我们 加入传客 媒体报道 帮助中心 传客活动 免责声明 联系我们 移动版 移动应用

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X