美文网首页
iOS内存优化记录

iOS内存优化记录

作者: 王方帅 | 来源:发表于2022-04-18 17:57 被阅读0次

    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内存优化记录

          本文链接:https://www.haomeiwen.com/subject/zepfertx.html