android内存溢出的原因:
android使用基于寄存器的Dalvik虚拟机,每个android应用单独使用一个Dalvik虚拟机,每个虚拟机使用的堆内存是有限的,超过了限制就会引发oom错误。产生oom的原因大约是:1、长期保存某些大型资源的应用,资源得不到释放(比如Contextg);2、使用了多个Bitmap
容易造成oom的情况:
1、不恰当的使用static关键字。静态变量时属于类而不是对象,所以使用static保存大资源(比如Context)非常容易造成oom。
解决方案:
尽量不要使用static 变量保存大资源(比如Context等)
使用软应用
使用application Context
2、内部类线程引发oom。 线程的生命周期不可控,在线程没有完成run方法之前线程不会被销毁,同事由于采用内部类产生的线程同时用保存Activity的引用。同理使用Activity的内部类Asyncatask也容易造成oom
解决方案:
将内部类线程改