美文网首页Android面试一问一答
Android面试一问一答:Handler内存泄漏

Android面试一问一答:Handler内存泄漏

作者: LvStudio | 来源:发表于2019-01-10 17:56 被阅读7次

    Handler为什么会内存泄露

    • Handler会持有Activity的引用,如果有Message没有被处理或者没有处理完,由于Message会持有Handler的引用,所以造成生命周期长的对象持有生命周期短的对象的引用,从而Activity和Handler不能被释放,造成内存泄露。

    如果Message处理完之后,这些内存可以被回收吗

    • Message处理完之后,Message就不能被GC Root的可达性搜索查找到,失去关联关系,这一连串内存都会被回收。

    常见的GC Root有哪些

    • 通过System Class Loader或者Boot Class Loader加载的class对象,通过自定义类加载器加载的class不一定是GC Root

    • 处于激活状态的线程

    • 栈中的对象

    • JNI栈中的对象

    • JNI中的全局对象

    • 正在被用于同步的各种锁对象

    • JVM自身持有的对象,比如系统类加载器等。

    相关文章

      网友评论

        本文标题:Android面试一问一答:Handler内存泄漏

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