本片文章我们从以下几个方面来了解内存泄漏:
- 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
欢迎批评指正~~
网友评论