您有一份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
-
通过静态分析,可以看到内存疑似泄漏点,这个需要我们根据具体业务去分析。
-
找到一个疑似泄漏点,根据Xcode勘测分析
-
逐条分析并修改
CaptureViewController
实例方法缺少[super ViewDidDiscovery:]
调用PhotoViewController
block强引用10处Memory error
未修改:基本都是返回类型NSString
存在返回nil
情况Localizability Issue
未修改:面向用户的文本没有使用本地化字符串宏CFStringRef
会使引用计数+1,必须调用CFRelease()
Core Foundation
和Objective-C
转换存在持有权的移交
优化after
通过 静态分析(Analyze)
查到的疑似泄漏点全部修复完毕。
Debug Memory Graph
优化before
-
通过
Debug Memory Graph
我们可以看到有29种泄漏类型
-
点击某一个查看
Memory Graph
可以看到内存的一个引用关系
-
逐表分析并修改
ClickHightlightDelegate
修改为弱引用UITextFieldDelegate
修改为弱引用UITextViewDelegate
修改为弱引用- 删除
ImagePickerViewDelegate
,改为实例方法 GMImagePickerControllerDelegate
修改为弱引用AFHTTPSessionManager
及时释放session
优化after
剩余5种泄漏类型,属于malloc block leaked
,工具并没有指出泄漏点,需要我们进一步分析。
动态分析
优化before
-
通过
leaks
工具分析,一处就有384新的泄漏点
-
随便点了几个模块,共有779个泄漏处
-
根据泄漏处的代码修复
pageController
修改为弱引用WebNativeViewController
修改block回调的引用关系WebNativeDataSource
修改block回调的引用关系FeedbackDelegate
修改为弱引用WebImageUtils
修改为弱引用WebNativePagingCell
修改为__weak弱引用WebPluginShare
修改为__weak弱引用JSContext
优化引用关系和内存释放
优化after
- 修复好大部分泄漏点
- 目前遗留javascriptCore框架待优化
优化成果
优化之前
-
Viewcontroller
不能销毁,不触发dealloc
-
APP启动,初始内存
-
按照指定路径,并反复点击,内存一直在增加
优化之后
-
Viewcontroller
可以销毁,触发dealloc
-
APP启动,初始内存
-
按照指定路径,并反复点击,内存稳定不会暴增
以上是关于您有一份APP内存优化的报告,请查收~的主要内容,如果未能解决你的问题,请参考以下文章
叮~您有一封#2021亚太5G消息应用大会#邀请函,请查收!