ps:查看所有进程
dumpsys meminfo pkgname:查看具体内存信息
一个app就是一个进程对应一个虚拟机
GC只在Heap剩余空间不足时才去触发垃圾回收
GC触发时,所有的线程都会被暂停---卡顿
APP内存限制机制
每个app分配的最大内存限制,随设备不同而不同
吃内存大大户:图片
为什么要限制
切换应用时后台app清理机制
app切换时的LRU cache(LRU算法:最新使用的排在最前面,最少可能的被清理掉)
onTrimMemory()回调方法
App内存优化方法
1.数据结构优化
频繁字符串拼接StringBuilder
ArrayMap SparseArray代替HashMap
内存抖动
再小的class耗费0.5kb
Listview /gridview convertview复用
避免在ondraw方法里执行创建对象的操作
2.对象复用
3.避免内存泄漏
内存泄露会导致剩余可用heap越来越少,频繁触发GC
尤其activity 泄露
用application context 而不是activity context
注意cursor对象是否及时关闭
OOM 问题优化
一、OOM问题分析
1.OOM的必然性和可解决性
2.OOM的绝大部分都发生在图片
二、强引用,软引用的意义
软引用使用场景:
有些变量使用的时间,次数不多时,activity在活动z
三、优化OOM问题的方法
1.注意临时Bitmap对象的及时回收
2.避免bitmap的浪费
3.Try catch 某些大内存分配的操作
4.加载bitmap:缩放比例,解码格式,局部加载