一、oom定义
当前占用内存加上申请的内存资源超过了虚拟机的最大内存限制,就会抛出Out Of Memory
二、一些容易混淆的概念
内存溢出(oom) / 内存抖动 / 内存泄漏
内存抖动是指在短时间内有大量的对象被创建或者被回收的现象。
内存泄漏是指某一段内存在程序里功能上已经不需要了,但是垃圾回收机制回收内存时检测那段内存还是被需要的,不能被回收,这种在程序中在没有使用的但是又不能被回收的内存就是被泄漏的内存
三、解决oom
一般情况下,造成oom的原因:
加载对象过大和相应资源过多,来不及释放。
<1> 图片显示----在滑动的过程中(ListView)不加载图片,滑动停止时再加载
<2> 及时释放内存---调用bitmap的recycle方法
<3> 图片压缩----对大图片进行图片压缩,使用bitmap的insimpleSize
<4> inBitmap高级属性
<5> 捕获异常
2、其他方法
listview:复用机制
避免在onDraw方法里执行对象的创建
谨慎使用多进程