关于内存泄漏的一些小常识

来源:互联网 发布:金山卫士 源码 编辑:程序博客网 时间:2024/05/17 05:53


1.Context、Activity、Fragment等造成内存泄漏

如Toast,或其他一些方法,传入页面的context,activity,fragment对象,页面结束,Toast却仍旧在对其进行引用,自然无法内存回收

解决方法,页面结束后仍旧会占用context的,传入ApplicationContext,

而有些线程类的引用,无法确定其时间,则一定要使用WeakReference

举例需要用弱引用(WeakReference)引用Context

WeakReference<Context> wr = new WeakReference<>(context) ;

使用,则

Context context = wr.get();

即可实现

2.Bitmap造成内存泄漏

使用结束,一定要手动调用对象回收方法,recycle() 或置null

3.静态变量造成内存泄漏

若页面中存在静态变量,被其他页面使用中退出,则该页面也会造成内存泄漏

解决方法:

拥有静态成员的ondestory中,把静态变量置空

最后,一个强壮应用背后应该又一个leakcanary

0 0