内存泄漏
当某些对象不再被程序所使用,但是这些对象仍然被某些对象所引用着,进而导致垃圾收集器不能及时释放它们。
内存泄露 指由于疏忽或错误造成程序未能释放已经不再使用的内存。
解决办法:在不需要的时候及时释放掉资源
内存抖动
内存抖动 指内存频繁地分配和回收
后果
1、频繁的GC会导致卡顿
2、严重时还会导致OOM
注:内存抖动为什么会引起OOM呢?
主要原因还是有因为大量小的对象频繁创建,导致内存碎片,从而当需要分配内存时,虽然总体上还是有剩余内存可分配,而由于这些内存不连续,导致无法分配,系统直接就返回OOM了。
解决方案
1、尽量避免在循环体内创建对象,应该把对象创建移到循环体外
2、避免在View的onDraw()方法里频繁地创建对象
3、对于能够复用的对象,可以使用对象池将它们缓存起来
内存溢出
内存溢出 指应用申请超过阈值的内存空间
产生原因
1、应用存在内存泄露,长时间积累导致OOM
2、应用的某些逻辑操作疯狂的消耗掉大量内存
解决方案
1、规避内存泄漏
2、图片进行压缩显示或局部显示