笔记:App内存优化
1.数据结构优化
频繁字符串拼接用StringBuilder
字符串拼接不用StringBuilder和用了后的运行速度相差巨大,8000ms才能运行完毕的拼接,StringBuilder只需要8ms就能运行完毕.ArrayMay、sparseArray替换HashMap.
-
内存抖动
内存抖动是指在短时间内有大量的对象被创建或者被回收的现象,会导致垃圾回收机制频繁运行.
Android Studio提供了工具来帮助开发者发现和解决内存抖动和内存泄漏。Tool - Memory Monitor(用于发现内存抖动及内存泄漏的)
图片中内存运行看起来像锯齿形状的就是发生了内存抖动。由于内存抖动是在短时间内创建释放大量对象导致的(一般是循环内创建对象)。
直接办法就是不再短时间内创建大量对象,如果创建对象的过程可以拿到循环外而不影响功能。
如果必须在短时间内创建对象,但是要控制数量;这个问题目前可以使用对象池的方法解决。 -
再小的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来处理。