美文网首页
内存泄露的常见错误

内存泄露的常见错误

作者: tiger桂 | 来源:发表于2019-05-29 14:23 被阅读0次

    Context使用不当造成内存泄露:不要对一个Activity Context保持长生命周期的引用。尽量在一切可以使用应用ApplicationContext代替Context的地方进行替换。

    构造Adapter时,没有使用缓存的 convertView

    Bitmap对象不在使用时调用recycle()释放内存

    非静态内部类的静态实例容易造成内存泄漏:即一个类中如果你不能够控制它其中内部类的生命周期(譬如Activity中的一些特殊Handler等),则 尽量使用静态类和弱引用来处理(譬如ViewRoot的实现)。

    警惕线程未终止造成的内存泄露;譬如在Activity中关联了一个生命周期超过Activity的Thread,在退出Activity时切记结束线 程。一个典型的例子就是HandlerThread的run方法是一个死循环,它不会自己结束,线程的生命周期超过了 Activity生命周期,我们必须手动在Activity的销毁方法中中调运 thread.getLooper().quit();才不会泄露。

    对象的注册与反注册没有成对出现造成的内存泄露;譬如注册广播接收器、注册观察者(典型的譬如数据库的监听)等。

    创建与关闭没有成对出现造成的泄露;譬如Cursor资源必须手动关闭,WebView必须手动销毁,流等对象必须手动关闭等。

    不要在执行频率很高的方法或者循环中创建对象(比如onmeasure),可以使用HashTable等创建一组对象容器从容器中取那些对象,而不用每次 new与释放。

    避免代码设计模式的错误造成内存泄露;譬如循环引用,A持有B,B持有C,C持有A,这样的设计谁都得不到释放。

    相关文章

      网友评论

          本文标题:内存泄露的常见错误

          本文链接:https://www.haomeiwen.com/subject/zbaktxtx.html