(一) 查询数据库没有关闭游标
(二) 构造Adapter时,没有使用缓存的 convertView
(三) Bitmap对象不在使用时调用recycle()释放内存
(四)当项目中包含大量图片,或者图片过大,可能会oom
(五) 释放对象的引用
第一:不要为Context长期保存引用(要引用Context就要使得引用对象和它本身的生命周期保持一致)。
第二:如果要使用到Context,尽量使用ApplicationContext去代替Context,因为ApplicationContext的生命周期较长,引用情况下不会造成内存泄露问题。
第三:在你不控制对象的生命周期的情况下避免在你的Activity中使用static变量,因为static是与程序的生命周期一样的。尽量使用WeakReference去代替一个static。
第四:垃圾回收器并不保证能准确回收内存,这样在使用自己需要的内容时,主要生命周期和及时释放掉不需要的对象。尽量在Activity的生命周期结束时,在onDestroy中把我们做引用的其他对象做释放,比如:cursor.close()。
五:匿名内部类/非静态内部类,持有对外部类(一般是Activity)的引用。如果有生命周期不一样的异步线程,那就要小心了,比如Handler。
六:监听器没有及时释放(context.registerReceiver(recevier,intentFilter);)
七:单例模式一般都是持续于整个生命周期的,那么持有外部的引用也会造成内存泄漏