徐二七 2012-08-15
内存溢出(OOM)这是我们经常遇到的问题,引起OOM的原因是我们应用的问题,而不是系统问题,所以我们要在做项目之前就要细细的研究一下,哪些情况下可能引起OOM这样就不至于在项目搞得差不多了,再去找,这样就得不偿失了!
常见的容易引起内存泄漏的不良代码:
1、查询数据库没有关闭游标
// 操作完后关闭游标
Cursor cursor = null;
try {
cursor = getContentResolver().query(uri ...);
if (cursor != null && cursor.moveToNext()) {
... ...
}
} finally {
if (cursor != null) {
try {
cursor.close();
} catch (Exception e) {
//ignore this
}
}
}2、进行流操作时没有关闭流
3、构造Adapter时,没有使用缓存的convertView
4、Bitmap对象不在使用时调用recycle()没有及时释放,尤其是进行大图操作
if(bitmap != null && !bitmap.isRecycled()){
bitmap.recycle();
bitmap = null;
}
System.gc();
}5、没有及时释放对象的引用