笔记:App内存优化

1.数据结构优化

  • 频繁字符串拼接用StringBuilder
    字符串拼接不用StringBuilder和用了后的运行速度相差巨大,8000ms才能运行完毕的拼接,StringBuilder只需要8ms就能运行完毕.

  • ArrayMay、sparseArray替换HashMap.

  • 内存抖动
    内存抖动是指在短时间内有大量的对象被创建或者被回收的现象,会导致垃圾回收机制频繁运行.
    Android Studio提供了工具来帮助开发者发现和解决内存抖动和内存泄漏。

    Tool - Memory Monitor(用于发现内存抖动及内存泄漏的)
    笔记:App内存优化
    图片中内存运行看起来像锯齿形状的就是发生了内存抖动。

    由于内存抖动是在短时间内创建释放大量对象导致的(一般是循环内创建对象)。
    直接办法就是不再短时间内创建大量对象,如果创建对象的过程可以拿到循环外而不影响功能。
    如果必须在短时间内创建对象,但是要控制数量;这个问题目前可以使用对象池的方法解决。

  • 再小的Class也要耗费0.5KB内存

    2.对象复用

  • 复用系统自带的资源。

  • ListView/GridView的ConvertView复用。
  • 避免在onDraw方法里执行对象的创建。

    3.避免内存漏露

  • 内存漏露会导致剩余可用的Heap越来越少,频繁触发GC。尤其Activity泄漏

  • 用Application Context而不是Activity Context
  • 注意Cursor对象是否及时关闭

    4.OOM问题的优化

    OOM(out of memory)内存溢出,内存溢出大部分发生在图片加载中。

  • 内存溢出的解决办法:
    1、等比例缩小图片
    2、对图片采用软引用,及时进行recycle()操作。
    3、使用加载图片框架处理图片,如专业处理图片的ImageLoader图片加载框架,还有XUtils的BitMapUtils来处理。