美文网首页
Android 内存泄漏(MemoryLeak)

Android 内存泄漏(MemoryLeak)

作者: 昵称不唯一 | 来源:发表于2019-07-15 17:24 被阅读0次

    本片文章我们从以下几个方面来了解内存泄漏:

    • 1、什么是内存泄漏
    • 2、内存泄漏产生的原因有哪些
    • 3、如何定位内存泄漏
    • 4、如何解决内存泄漏

    1、什么是内存泄漏?

    应该被回收的资源,未及时回收。如果发生内存泄漏,轻则导致应用性能下降,响应卡顿;重则导致OOM,从而使应用崩溃。

    2、内存泄漏产生的原因有哪些?

    • 1、集合元素未及时清除
    • 2、static成员变量引用非Application Context或者间接引用非- Application Context
    • 3、引用非静态内部类/匿名内部类对象(AsyncTask、Thread、Handler)
    • 4、未及时关闭资源对象(Broadcast未Unregister、File IO未Close、Cursor未Close,Bitmap未回收等)
    • 5、WebView未及时销毁

    3、如何定位内存泄漏?

    • 1、IDE自检查找发生警告的代码或者代码审查,检查是否有可能导致内存泄漏的代码存在
    • 2、通过LeakCanary、StrictMode工具可以轻松的定位到比较明显的导致内存泄漏的原因
    • 3、通过使用Android Monitor,观察内存异常的时机,使用Dump Java Heap生成.HPROF文件,分析该文件,可以定位出发生异常的实例
    • 4、还有就是Eclipse时使用的MAT工具

    4、如何解决内存泄漏?

    • 1、集合元素使用完后,及时clear
    • 2、尽量使用ApplicationContext代替Context
    • 3、使用静态内部类,引用外部类对象时,使用WeakReference
    • 4、及时清空Handler,清除不必要的线程
    • 5、资源对象使用完毕后及时关闭/释放
    • 6、在不使用WebView的时候,停止load url,销毁WebView

    欢迎批评指正~~

    相关文章

      网友评论

          本文标题:Android 内存泄漏(MemoryLeak)

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