内存优化主要解决两方面问题:
1.内存溢出
溢出就是指内存花销超支了,原本分给你50M,你却实际用了100M,你这样做很容易被系统弄死的,为啥你这么拽,啊,就你能!
常见例子就是加载图片,Android分配给Bitmap的大小只有8M。解决也很简单,bitmap及时回收+图片压缩。
这块略过~ 往下看
2.内存泄露
从字面理解,有内存资源丢了,找不到了。系统大人给你100M,你小子一不小心弄丢了50M,败家玩意儿,对得起组织吗?对得起党和人民吗?对得起........卡,入戏了。
举个日常的例子,你是一名前端开发,小马哥是一名后端开发,这天你做完了工作准备下班,可是老板说,小马还没弄好,让你不要走,陪着一起加班,那么你这时候的状态就是典型的内存泄露。
对于丢失的这部分你当然无法控制了。想回收,没门!感受到被“无法控制”支配的恐惧了吗?这种失控感有没有很爽?
好,解决问题,先提出问题?到底是什么引起了泄露? 容我引用一下百度百科:
内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
WTF,某种原因,呵呵。
常见有以下几种:
a. static成员引用,那就尽量避免。
b.Activity引用无法回收,那就Context尽量使用ApplicationContext,还可以使用弱引用。
c.内部类持有外部类的引用,也会造成外部类的泄露,那就用静态内部类,因为静态内部类不持有外部的引用。
d.资源性对象(比如Cursor,File文件等),这种记得不用了关闭掉,close,close,close!