美文网首页android技术收藏
android 内存泄漏总结

android 内存泄漏总结

作者: 后厂村追寻 | 来源:发表于2017-04-04 12:35 被阅读60次

android 内存泄漏总结

前言

内存泄漏很危险。轻则卡顿,重则oom。
这种东西写代码的时候注意一下就能避免90%的内存泄漏,
只要写代码的时候遇到想一下你就可以避免了,免得后面为了找内存泄漏各种排查,得不尝试!!
最后会总结一下常见的内存泄漏。

导致内存泄漏的原因

总结来说就是:
本该被jvm回收的生命周期短对象却被生命生命周期长的对象直接或间接的所持有导致短对象无法释放。有种藕断丝连的感觉,哈哈...

排查之法-MAT(MemoryAnalyzerTools)

MAT 是一个根据堆的内存信息检测内存对象之间的引用链的关系,根据这个关系我们就可以知道哪些对象内存泄漏了。具体的操作流程网上有很多,这里就不多写了。

排查之法-LeakCanary

LeakCanary是一个检测内存泄露的开源类库,地址:
https://github.com/square/leakcanary

常见的内存泄漏

  1. 单例造成的内存泄漏,一般是传入的是Context的问题,解决方法:传入 Application 的 Context。
  2. 匿名内部类/非静态内部类和异步线程造成的内存泄漏,解决方法:静态内部类,静态内部类中使用弱引用来引用外部类的成员变量。
  3. 避免使用 static 成员变量,它的生命周期和应用的生命周期一样长。
  4. 资源未关闭造成的内存泄漏,比如:BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap等资源的使用,应该在Activity销毁时及时关闭或者注销,否则这些资源将不会被回收,造成内存泄漏。
  5. bitmap的使用问题:加载可以使用色彩模式为rgb565的方式节省内存的开销。释放时调用recyle()方法因为加载Bitmap对象的内存空间:java+c 两部分内存,调用recyle()是释放c内存的空间。
  6. handler造成的内存泄漏,因为handler的生命周期和activity或者view的生命周期是不一样的,它属于Thread-Local型的,很容易导致无法正确释放。关系:Handler、Message和MessageQueue都是相互关联在一起的,如果Handler发送的Message延时处理,则该Message及发送它的 Handler对象将被线程 MessageQueue一直持有。那么持有Handler的对象(view/activity)就泄漏了。

相关文章

  • (转载自diycode)2017 Android 面试题分享整理

    Android(安卓) Android基础知识 Android内存泄漏总结 Handler内存泄漏分析及解决 An...

  • Android 基础

    1、Android布局 2、Android内存泄漏总结 3 、Handler内存泄漏分析及解决 4...

  • android内存泄露

    参考内存泄露从入门到精通三部曲之基础知识篇Android 内存泄漏总结Android内存泄漏研究Android内存...

  • android学习资料

    第一部分: Android(安卓) Android基础知识 Android内存泄漏总结 Handler内存泄漏分析...

  • Android基础知识点(系列版)

    0.2. android内存泄漏,举个例子 Android 内存泄漏总结(超级实用) 意思:该被释放的对象没有释放...

  • Android学习之旅

    1.Android基础知识2.Android内存泄漏总结3.Handler内存泄漏分析及解决4.Android性能...

  • 安卓内存泄漏

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

  • Part1_Android内存泄漏总结

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

  • Android 内存泄漏总结

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

  • 【中级——高级迈不过去?】Android高级工程师进阶学习——A

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

网友评论

    本文标题:android 内存泄漏总结

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