徐二七 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、没有及时释放对象的引用