1.Handler引起的内存泄漏(生命周期长的持有了生命周期短的引用)

2.Bitmap对象使用结束没有使用recycle释放内存

1
2
val bitmap = BitmapFactory.decodeResource(resources,R.drawable.ic_launcher)
bitmap.recycle()

3.cursor的释放

1
2
val cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null)
cursor?.close()

4.BroadcastReceiver、EventBus、RxBus等注册未取消监听

5.单例模式构造引用的context对象:
public class Utils {

private static Utils instance;
private Context context;

public static Utils getInstance(Context context) {
    if (instance == null) {
        synchronized (Utils.class) {
            instance = new Utils(context.getApplicationContext());
        }
    }
    return instance;
}

private Utils(Context context) {
    this.context = context;
}

}

本文地址: http://www.yppcat.top/2019/08/26/内存泄漏的原因和解决方式/