您有一份APP内存优化的报告,请查收~

Posted wuwuFQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您有一份APP内存优化的报告,请查收~相关的知识,希望对你有一定的参考价值。

APP性能优化之内存优化

随着APP功能的增加和版本不断的迭代,内存优化也迫在眉睫。(涉及公司和项目名称的会进行遮盖)

APP优化所用工具:

Xcode Version 13.4.1 (13F100)

Instruments Version 13.4.1 (13F100)

Simulator iPhone 13 Pro Max(ios 15.5)

静态分析(Analyze)

优化before

  1. 通过静态分析,可以看到内存疑似泄漏点,这个需要我们根据具体业务去分析。

  2. 找到一个疑似泄漏点,根据Xcode勘测分析

  3. 逐条分析并修改

    • CaptureViewController 实例方法缺少 [super ViewDidDiscovery:] 调用
    • PhotoViewController block强引用10处
    • Memory error未修改:基本都是返回类型 NSString 存在返回 nil 情况
    • Localizability Issue 未修改:面向用户的文本没有使用本地化字符串宏
    • CFStringRef 会使引用计数+1,必须调用 CFRelease()
    • Core FoundationObjective-C 转换存在持有权的移交

优化after

通过 静态分析(Analyze) 查到的疑似泄漏点全部修复完毕。

Debug Memory Graph

优化before

  1. 通过 Debug Memory Graph 我们可以看到有29种泄漏类型

  2. 点击某一个查看 Memory Graph 可以看到内存的一个引用关系

  3. 逐表分析并修改

    • ClickHightlightDelegate 修改为弱引用
    • UITextFieldDelegate 修改为弱引用
    • UITextViewDelegate 修改为弱引用
    • 删除 ImagePickerViewDelegate,改为实例方法
    • GMImagePickerControllerDelegate 修改为弱引用
    • AFHTTPSessionManager 及时释放session

优化after

剩余5种泄漏类型,属于malloc block leaked,工具并没有指出泄漏点,需要我们进一步分析。

动态分析

优化before

  1. 通过 leaks 工具分析,一处就有384新的泄漏点

  2. 随便点了几个模块,共有779个泄漏处

  3. 根据泄漏处的代码修复

    • pageController 修改为弱引用
    • WebNativeViewController 修改block回调的引用关系
    • WebNativeDataSource 修改block回调的引用关系
    • FeedbackDelegate 修改为弱引用
    • WebImageUtils 修改为弱引用
    • WebNativePagingCell 修改为__weak弱引用
    • WebPluginShare 修改为__weak弱引用
    • JSContext 优化引用关系和内存释放

优化after

  • 修复好大部分泄漏点
  • 目前遗留javascriptCore框架待优化

优化成果

优化之前

  1. Viewcontroller 不能销毁,不触发 dealloc

  2. APP启动,初始内存

  3. 按照指定路径,并反复点击,内存一直在增加

优化之后

  1. Viewcontroller 可以销毁,触发 dealloc

  2. APP启动,初始内存

  3. 按照指定路径,并反复点击,内存稳定不会暴增

以上是关于您有一份APP内存优化的报告,请查收~的主要内容,如果未能解决你的问题,请参考以下文章

叮~您有一份中秋阅读计划,请查收!

您有一份直播回放待查收!

云图说丨叮咚,您有一份短信通关攻略待查收

叮~您有一封#2021亚太5G消息应用大会#邀请函,请查收!

叮~您有一封#2021亚太5G消息应用大会#邀请函,请查收!

「请查收」一份丰富的 Web 性能优化指南