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
网友评论