一、什么是OOM?
当前占用的内存加上申请的内存资源超过了Dalvik虚拟机的最大内存限制就会抛出的Out of memory异常。
二、一些容易出混淆的概念
内存溢出(Out of memory):当前占用的内存加上申请的内存资源超过了Dalvik虚拟机的最大内存限制会抛出异常。
内存抖动:短时间内大量的对象被创建,又被马上释放,严重占用内存区。
内存泄漏:进程中的某些对象已经没有被其他地方引用到,但是它会引用到其他还没有被回收的对象,导致GC无法产生作用,累计到一定程度会造成OOM。
三、如何解决OOM?
3.1有关bitmap
1.图片显示 :在ListView滑动的时候不去调用网络请求,当滑动事件停止时才去调用网络请求,把图片加载到ListView上。
2.及时释放内存 :调用recycle方法。
3.图片压缩 :对加载的图片进行缩放。
4.inBtimap属性 :可以让BitmapDecode解码器使用已经存在的内存区域,不会重新申请新的区域。
5.捕获异常 :捕获Error,不是Exception。
3.2其他方法
1.ListView :使用convertView复用;大图使用LRU(最近最少使用)缓存机制进行复用。
2.避免在onDraw方法里面执行对象的创建。
3.谨慎使用多进程。
网友评论