iOS性能优化之内存篇

  之前项目开发过程中也有对内存进行优化,但是并没有进行系统的优化,更多是隔一段时间优化一些。最近自己总结了一些自己的心得体会分享给大家,希望大家能够多多批评指正。

app内存优化方向

降低运行内存峰值

1、减少不必要单例的使用,尽可能减少单例对占内存较大对象的强持有
2、排查内存泄漏
3、降低图片缓存工具SDWebImage最大缓存值,保证必要的流畅性
4、大图尽量不要使用[UIImage imageNamed:@“”],(ps:系统会进行缓存)
5、在整个app运行期间不销毁的对象能够通过一定的类似归档的机制,进行快速的恢复与创建,比如tabbar上的页面,切换的到某个页面时,其他几个tab上的页面进行归档,切换回来的时候进行恢复。(ps:要根据事情情况决定,避免反复创建与销毁)
6、在条件允许的情况下,尽可能降低图片的品质

降低运行期间内存峰值的波动

1、对较大数据操作时,通过stream的形式进行,具体场景如下:
  1)上传文件的时候
  2)下载文件的时候(下载的时候,也可以通过将数据写进文件的形式)
  3)socket传输文件的时候
  4)本地导入大文件的时候,比如对大文件进行md5运算的时候
2、加载大图的时候采取优化措施(ps:具体可以搜下,网上相关的博客很多,这里不再一一列出)
3、及时释放不再使用的对象
  1)对于业务中存在循环创建的逻辑,要及时释放不再需要的,比如电商app存在一个循环流程:商详页->其他页面->商详页->其他页面。应该进行限制,比如循环了几次后需要把中间的某些页面给释放掉,避免内存一直增加。
  2)循环体内创建的占内存较大的对象通过autoreleasepool及时释放
  3)app没有打开的RN页面时,及时把RN的bridge释放掉。(ps:这个bridge很占内存)

4,内存调度策略
1、 在开辟一块大内存之前,及时释放一些内存,避免同时出现持有多个占用内存较大的对象.比如在打开RN页面时,SDWebImage清理下缓存中的图片,将一些可以恢复的对象暂时销毁掉等。
2、根据长期观察的结果,结合机型对不同的手机采取不同的内存调度策略。

app内存优化的阶段

app收到内存警告前进行优化

  在合理的范围内,尽最大可能降低app运行内存峰值,降低app运行内存峰值的波动

app收到内存警告后进行优化

  以最快的速度降低内存峰值,防止app被系统杀死。可以根据剩余内存、收到内存警告的次数、机型等一些额外信息制定内存释放的等级。在必要的时候可以让不重要的业务作出牺牲。

更多干货文章,扫描下方二维码关注公众号
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值