上个项目中就遇到了OOM的问题,但是是图片特别多,我被图片动不动就搞死了,现在搞的这个项目竟然也把我被OOM搞晕了!图片的这个问题普遍网上讲的比较多,但是除了图片之外资料就相对少了点,(小马的一个博客写的很是不错)今天就晒晒自己的拙见!
1.良好的编码习惯,就是代码模块化,功能提具体,功能体中的变量用完之后立马null。如果变量特别多那就Null之后直接System.gc();
2.在项目中一般会用到View,这个View中包含了好多View,我在网上找到了一种方法,出处想不起来了,
/**释放View内存***/
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
调用完之后System.gc();就OK了!其实有时候觉得频繁的调用GC会对CPU的耗费巨大,因此建议不要太过频繁的使用!
3.图片问题就使完之后就recycle();网上搜搜这个方法比较多就不累赘了!
4.我自己发现有时候在finish()之后System.gc();能省出好多内存。
自己的愚见仅供参考!大家多多指教!