美文网首页
android内存泄露的场景

android内存泄露的场景

作者: 慶孟國 | 来源:发表于2017-12-12 10:04 被阅读0次

    类的静态变量持有大数据对象

    静态变量长期维持到大数据对象的引用,阻止垃圾回收。

    非静态内部类的静态实例

    非静态内部类会维持一个到外部类实例的引用,如果非静态内部类的实例是静态的,就会间接长期维持着外部类的引用,阻止被回收掉。

    资源对象未关闭

    资源性对象如 Cursor、File、Socket,应该在使用后及时关闭。未在 finally 中关闭,会导致异常情况下资源对象未被释放的隐患。

    注册对象未反注册

    未反注册会导致观察者列表里维持着对象的引用,阻止垃圾回收。

    Handler临时性内存泄露

    Handler 通过发送 Message 与主线程交互,Message 发出之后是存储在 MessageQueue 中的,有些 Message 也不是马上就被处理的。在 Message 中存在一个 target,是 Handler 的一个引用,如果 Message 在 Queue 中存在的时间越长,就会导致 Handler 无法被回收。如果 Handler 是非静态的,则会导致 Activity 或者 Service 不会被回收。

    由于 AsyncTask 内部也是 Handler 机制,同样存在内存泄漏的风险。

    此种内存泄露,一般是临时性的。

    相关文章

      网友评论

          本文标题:android内存泄露的场景

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