Android 内存优化笔记

前一段时间接手了一个新的项目,看友盟后台有好多OOM,而且滑动起来也很不流畅。我便对此产生了好奇。花了一段时间把内存这个彻彻底底的研究了一下,在此总结一下怎么样才能把app的内存占用降低下去。

题外话:推荐一个非常好用的开源项目 leakcanary只要加短短两句话,内存泄露非常直白就被展现出来了。

内存溢出基本上大部分都是内存泄露导致的,泄露泄露泄露最后超出最大内存限制然后就OOM了,下面介绍两个快速缓解(注意是缓解)OOM的办法:

1、 当然如果你的app确实需要展示很多图片,那么建议你在Manifest中加入Android:largeHeap=true , 那么你的程序在3.0以后就可以使用256兆内存(并不推荐用这个方法解决oom问题,但是这个却是最快的)。
2、 ImageLoader RGB_565 要比 RGB_8888 省好多好多的内存…不了解的可以百度一下(同时建议用glide替换Imageloader,好处有很多,例如绑定生命周期之类云云)。

**可能造成项目内存泄露的地方: **

  • 1 WebView内存泄露 (xml中注册)
  • 2 Dialog 内存泄露 (横竖屏切换)
  • 3 数据库操作 (游标,事务等)
  • 4 bitmap 没释放 (Native 操作bitmap)
  • 5 handler 内存泄露 (Activity 被关闭)
  • 6 单例持有Activity对象导致内存泄露 (会阻止被回收)
  • 7 广播没有unregister (之类需要解绑操作的)
  • 8 File 输入输出流操作 (注意加 finally)
  • 9 没有缓存 convertView (越滑越卡)

这些就是可能造成内存泄露最终导致内存溢出的地方,以后会慢慢补充,关于下列两点我后续会继续po文章讲解决办法:

  • WebView内存泄露以及解决办法。
  • handler内存泄露的原因以及解决办法。

欢迎访问我的博客:Wells’Note。欢迎留言讨论。

    原文作者:人失忆
    原文地址: https://www.jianshu.com/p/a51e68be9c40
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞