题记:

APP性能优化之内存优化三步论:这是为什么呢?怎么干?开始干

为什么要进行内存优化

1.APP运行内存限制,OOM导致APP崩溃。
2.APP性能:流畅性,响应速度用户体验

学习路线

Android的内存管理方式

1.Android系统内存分配与回收方式

一个APP通常就是一个进程对应一个虚拟机
GC只在heap剩余空间不够时才发出垃圾回收
GC触发时,所有的线程都会被暂停

2.APP内存限制机制

每个APP分配的最大内存限制,随设备的不同不同
吃内存大户:图片
为什么限制? Android系统是多任务系统

3.切换应用时后台APP清理机制

APP切换时的LRU Cache (该算法是最近使用的排在最前面,后台清理的时候按照使用时间来排序)
onTrimMemory()回调方法

4.监控内存的几种方法

方式一:AS监控 Android monitor工具

android is内存优化 android app内存优化_android is内存优化

方式二:Android device monitor

android is内存优化 android app内存优化_性能优化_02


android is内存优化 android app内存优化_android_03

APP内存优化方法

数据结构优化
频繁字符串拼接用StringBuilder
ArrayMap,SparseArray替换HashMap
内存抖动
再小的class耗费0.5KB
HashMap一个entry需要额外占用的32B(后面两个可以我们自身通过减少亢沉代码)
对象复用
复用系统自带的资源(能复用尽量复用)
ListView GridView recycleview的ConvertView(减少convertview的复用)
避免在onDraw方法里面执行对象的创建
避免内存泄漏有哪些方法
内存泄漏:由于代码质量瑕疵,导致这块内存,虽然停止没用了,但依然被其他东西引用,导致GC没发对其回收。
尤其Activity泄漏
使用application context 而不是 activity context
注意指针Cursor对象是否及时关闭

实践

OOM问题优化

OOM为题分析
强引用,软引用的意义
优化OOM问题的方法

实践

查看APP内存的方法和工具