美文网首页Android开发宝典Android开发Android开发经验谈
【Android】常见的内存泄漏场景分析

【Android】常见的内存泄漏场景分析

作者: FynnJason | 来源:发表于2017-12-20 23:20 被阅读50次

    前言

    如果在内存泄漏发生后再去找原因并修复会增加开发的成本,最好在编写代码时就能够很好地考虑内存问题,写出更高质量的代码,这里列出一些常见的内存泄漏场景,在以后的开发过程中需要避免这类问题。

    场景

    • 资源性对象未关闭。比如Cursor、File文件等,往往都用了一些缓冲,在不使用时,应该及时关闭它们。

    • 注册对象未注销。比如事件注册后未注销,会导致观察者列表中维持着对象的引用。

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

    • 非静态内部类的静态实例。

    • Handler临时性内存泄漏。如果Handler是非静态的,容易导致Activity或Service不会被回收。

    • 容器中的对象没清理造成的内存泄漏。

    • WebView。WebView存在着内存泄漏的问题,在应用中只要使用一次WebView,内存就不会被释放掉。

    监控

    除此之外,内存泄漏可监控,常见的就是用LeakCanary第三方库,这是一个检测内存泄漏的开源库,使用非常简单,可以在发生内存泄漏时告警,并且生成leak tarce分析泄漏位置,同时可以提供Dump文件进行分析。

    相关文章

      网友评论

        本文标题:【Android】常见的内存泄漏场景分析

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