Android 性能优化之内存泄漏检测以及内存优化(中)

转自:http://blog.****.net/self_study/article/details/66969064 

上篇博客我们写到了 Java/Android 内存的分配以及相关 GC 的详细分析,这篇博客我们会继续分析 Android 中内存泄漏的检测以及相关案例,和 Android 的内存优化相关内容。 
  上篇:Android 性能优化之内存泄漏检测以及内存优化(上)。 
  中篇:Android 性能优化之内存泄漏检测以及内存优化(中)。 
  下篇:Android 性能优化之内存泄漏检测以及内存优化(下)。 
  转载请注明出处:http://blog.****.net/self_study/article/details/66969064 
  对技术感兴趣的同鞋加群544645972一起交流。

Android 内存泄漏检测

  通过上篇博客我们了解了 Android JVM/ART 内存的相关知识和泄漏的原因,再来归类一下内存泄漏的源头,这里我们简单将其归为一下三类:

  • 自身编码引起由项目开发人员自身的编码造成;
  • 第三方代码引起这里的第三方代码包含两类,第三方非开源的 SDK 和开源的第三方框架;
  • 系统原因由 Android 系统自身造成的泄漏,如像 WebView、InputMethodManager 等引起的问题,还有某些第三方 ROM 存在的问题。

Android 内存泄漏的定位,检测与修复

  内存泄漏不像闪退的 BUG,排查起来相对要困难一些,比较极端的情况是当你的应用 OOM 才发现存在内存泄漏问题,到了这种情况才去排查处理问题的话,对用户的影响就太大了,为此我们应该在编码阶段尽早地发现问题,而不是拖到上线之后去影响用户体验,下面总结一下常用内存泄漏的定位和检测工具:

Lint

  Lint 是 Android studio 自带的静态代码分析工具,使用起来也很方便,选中需要扫描的 module,然后点击顶部菜单栏 Analyze -> Inspect Code ,选择需要扫描的地方即可: 
Android 性能优化之内存泄漏检测以及内存优化(中)