Android内存优化—内存泄漏、内存抖动、内存溢出

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiangguangchao/article/details/85232450

内存泄漏

当某些对象不再被程序所使用,但是这些对象仍然被某些对象所引用着,进而导致垃圾收集器不能及时释放它们。

内存泄露 指由于疏忽或错误造成程序未能释放已经不再使用的内存。

解决办法:在不需要的时候及时释放掉资源

内存抖动

内存抖动 指内存频繁地分配和回收

后果
1、频繁的GC会导致卡顿
2、严重时还会导致OOM

注:内存抖动为什么会引起OOM呢?
主要原因还是有因为大量小的对象频繁创建,导致内存碎片,从而当需要分配内存时,虽然总体上还是有剩余内存可分配,而由于这些内存不连续,导致无法分配,系统直接就返回OOM了。

解决方案
1、尽量避免在循环体内创建对象,应该把对象创建移到循环体外
2、避免在View的onDraw()方法里频繁地创建对象
3、对于能够复用的对象,可以使用对象池将它们缓存起来

内存溢出

内存溢出 指应用申请超过阈值的内存空间

产生原因
1、应用存在内存泄露,长时间积累导致OOM
2、应用的某些逻辑操作疯狂的消耗掉大量内存

解决方案
1、规避内存泄漏
2、图片进行压缩显示或局部显示

猜你喜欢

转载自blog.csdn.net/jiangguangchao/article/details/85232450