iOS内存优化记录

1,导出

(1)导出优化

问题:导出时未清理之前片段占用的内存,导致内存不释放。

解决:导出时强引用的MTLTexture在导出一个片段结束时给清理掉,这样导出时始终仅占用一个片段的纹理内存。

实际优化前后效果对比如下:

              图片张数         导出内存峰值       导出99%时内存占用   导出后内存降到
| 优化前     | 70张高清图      | 1.0GB           | 1.2GB           | 920MB |
| 优化后     | 70张高清图      | 109MB           | 420MB           | 102MB |

(2)导出前优化

问题:导出时编辑预览页的纹理未清空。

解决:导出时清空编辑预览页的纹理。

2,编辑预览页优化

问题:播放时或来回滑动时加载的片段纹理占用的内存未清理,导致内存不释放。

解决:
(方案1)收到内存警告时做强制清除。
(方案2)播放一个片段把前一个片段的纹理给清理掉

3,模板使用页优化

同2的问题和解决方案

4,首页优化

问题:首页很多section如果都加载了会占用100多M的缩略图资源,没有释放

解决:收到内存警告时释放掉这些缩略图资源,改用默认展位图,再次进来重新从本地SD加载

5,导出过程99%时存相册内存占用。

问题:选择70张高清图时,0%-98%的时候内存都是150MB,99%的时候开始上涨到500MB,据说这里只是做了保存相册的操作,但是我用demo试了一下,保存相册才占了40MB的内存。

解决:调试定位发现是走保存草稿代码的时候占用的内存。跟保存草稿内存优化走同一个逻辑。

6,保存草稿时内存占用。

问题:运行发现保存草稿时会从100MB涨到450MB

解决:调试发现图片保存到本地沙盒时会转成PNG然后存本地,此时for循环70张图片没有加autoreleasepool导致的,加上后内存稳定在130MB左右,使用完后释放。

里程碑1:

编辑器页点击导出清空内存:
优化前:
草稿箱选择70张图片的草稿,进入编辑页,内存占用95MB,点击导出,内存峰值150MB,31秒导出完毕
草稿箱选择70张图片的草稿,进入编辑页,从头播放到尾,内存占用964MB,点击导出,内存峰值1003MB,31秒导出完毕

优化后:
草稿箱选择70张图片的草稿,进入编辑页,从头播放到尾,内存占用964MB,点击导出,降到116MB,内存峰值160MB

模板编辑页点击导出清空内存:
优化前:
选择模板,进入相册选取页选择15张高清图,进入模板编辑页,点击暂停,内存占用159MB,点击导出,内存峰值349MB
选择模板,进入相册选取页选择15张高清图,进入模板编辑页,播放到结尾,内存占用274MB,点击导出,内存峰值487MB

优化后:
选择模板,进入相册选取页选择15张高清图,进入模板编辑页,播放到结尾,内存占用274MB,点击导出,内存降到112MB,内存峰值340MB

智能生成页点导出清空内存:
优化前:
选择30张图片,进入智能生成页,播放完510MB,点击导出,峰值892MB

优化后:
选择30张图片,进入智能生成页,播放完483MB,点击导出,降到316MB,峰值628MB

智能生成页点模板编辑页清空内存:
优化前:
选择30张图片,进入智能生成页,播放完510MB,点击Edit,进入模板编辑页,播放完800MB

优化后:
选择30张图片,进入智能生成页,播放完488MB,点击Edit,进入模板编辑页,当道283MB,播放完517MB

你可能感兴趣的:(iOS内存优化记录)