(二十五)OOM异常面试问题

2017-08-18  本文已影响60人  lkmc2

一、什么是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.谨慎使用多进程

上一篇下一篇

猜你喜欢

热点阅读