Android常见内存泄漏以及优化方案
单例导致内存泄漏 首先来看一下一种单例的写法: 多种单例写法参考 public class Utils { private static Utils mInstance ; private Context mContext ; private Utils ( Context context ) { this . mContext = context ; } public static Utils getInstance ( Context context ) { if ( mInstance == null ) { Util = new Utils ( context ) ; } return mInstance ; } } 以Activity为例,当我们启动一个Activity,并调用getInstance(Context context)Utils,传入Activity.this作为context,这样Utils类的单例mInstance就持有了Activity的引用,当我们退出Activity时,该Activity就没有用了,但是因为mIntance作为静态单例(在应用程序的整个生命周期中存在)会继续持有这个Activity的引用,导致这个Activity对象无法被回收释放,这就造成了内存泄露。 为了避免这样单例导致内存泄露,我们可以将context参数改为全局的上下文: