美文网首页
内存泄漏的场景及解决办法

内存泄漏的场景及解决办法

作者: 方_f666 | 来源:发表于2021-04-07 15:19 被阅读0次

    内存泄漏场景,以及开发过程如何避免内存泄漏。

    判断

    A引用B,A的生命周期长于B。

    Handler导致内存泄漏:Handler消息还没有发送完毕,Activity被销毁了,此时Activity无法被即时回收。
    解决方法:Activity的onDestory()移除所有消息handler.removeCallbacksAndMessagers(null)

    线程导致内存泄漏:子线程在耗时操作,内部类持有外部类隐士引用。当Activity被销毁了,子线程还在执行,Activity无法被回收。
    解决办法:使用静态内部类,再使用弱引用保存Context。

    单例导致泄漏:单例对象引用Activity上下文,单例的生命周期比它长。
    解决办法:上下文如果是Application,将和单例生命周期相同,不存在内存泄漏。

    静态集合导致泄漏:静态集合添加的对象,添加之后该集合一直引用该对象,无法释放。
    解决方法,使用完该集合,清空集合

    Stream未关闭导致内存泄漏:JVM无法通过垃圾回收来释放这些资源。
    解决办法:使用完流即时关闭流。

    其他原因导致内存泄漏:Service为解除绑定,broadcastReceiver未解除注册,EventBus未解除绑定

    相关文章

      网友评论

          本文标题:内存泄漏的场景及解决办法

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