Android性能-内存泄漏

2018-06-05  本文已影响6人  Fitz_Lee

泄漏原因:

public class AppManager {
    private static AppManager instance;
    private Context context;
    private AppManager(Context context) {
        this.context = context;
    }
    public static AppManager getInstance(Context context) {
        if (instance != null) {
            instance = new AppManager(context);
        }
        return instance;
    }
}
public class MainActivity extends AppCompatActivity {

    private static TestResource mResource = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(mResource == null){
            mResource = new TestResource();
        }
        //...
    }
    
    class TestResource {
    //...
    }
}

对于使用了BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap, 属性动画或循环动画等资源,应该在Activity销毁时及时关闭或者注销,否则这些资源将不会被回收,从而造成内存泄漏。
其中Bitmap使用不当,bitmap对象使用的内存较大,当我们不再使用Bitmap对象的时候一定要执行recycler方法,这里需要指出的是当我们在代码中执行recycler方法,Bitmap并不会被立即释放掉,其只是通知虚拟机该Bitmap可以被recycler了。

https://blog.csdn.net/north1989/article/details/51999920
https://blog.csdn.net/u013495603/article/details/50696170
https://blog.csdn.net/mxm691292118/article/details/51020023

上一篇 下一篇

猜你喜欢

热点阅读